AB
로그인 (A가 ANS = 180 (N-2)에 따라서 코드를 보유)
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; int로 N, ANS; 문자 S [ 100001 ]; INT 의 main () { 는 scanf ( " %의 S " , + S (1) ); N = 용의 strlen (S + 1 ), ANS = 15 - N; 위한 ( int로 난 = 1 난 ++; i가 N = <) 경우 (S [I] == ' O ' ++) ANS ; 경우 (ANS> = 8 ) 풋 ( " YES " ); 그밖에풋 ( " NO " ); }
기음
열거 패자 후, 몇 번을 승리 몇 거친을 기대할 수 있다는 것을 알고 고려 나는 책상 책상 (단지 라인이 계산)
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; CONST의 INT N = 2E5 + 7 , 개조 1E9 + = 7 ; INT의 N, A, B, C, ANS, FAC [N], INV [N], PA [N], PB [N], S [N]; INT qpow ( INT A, INT의 b) { INT RET = 1 ; 반면 (b) { 경우 (B & 1 ) = RET RET 1ll * *는 %의 모드; = 1ll * A * %의 개조, B >> = 1 ; } 반환 RET를; } INT C ( INT A, INTb) { 창 1ll의 *의 FAC [A] %의 개조에 *의 INV [AB] %의 개조에 *의 INV [B] %의 개조} INT 의 main () { CIN >> N 사항 >> >> B >> C; = 1ll * A *의 qpow ( 100 -c, mod- 2 ) %의 모드; B = B * * 1ll qpow ( 100 -c, mod- 2 ) % 개조; C = 1ll * C * qpow ( 100 , mod- 2 ) %의 모드; FAC [ 0 ] = 1 ; 위한 ( int로 I = 1 ; i가 = < 2 FAC [I] = 1ll FAC * [I- * N I ++) 1 * I %모드; INV [ 2 *의 N] = qpow (FAC [ 2 * n을, mod- 2 ); 위한 ( int로 I = 2 ]를 I * N I -) INV [I- 1 ] = 1ll INV * [I] * % 나 개조; PA [ 0 ] = (PB)은 [ 0 ] = 1 ; 위한 ( int로 I = 1 ; i가 = < 2 PA [I] = 1ll * PA [I- * N 내가 ++)을 1 ] *는 %의 개조, PB [I] = 1ll * PB [I- 1 ] * B의 %를 모드; 위한 ( int로 I = 1 ] = 1은 < 2 * n은, 내가 ++) S [I] = 1ll * 난 * qpow을 (+ 개조 한 -c, mod-2 ) %의 모드; 위한 ( int로 I = 0 ANS = (ANS + (1ll * PA [I] * PB [N] + 1ll * PA [N] * PB [I]) % 개조 * S [i가 N +; i가 N <I가 ++)을 ] 개조 % * C (난 N- + 1 , I)) % 개조; COUT << ANS << ENDL; }
디
최소 계산되기 때문에 실제로 최적의 솔루션이 최대 값이 각각에 추가됩니다 찾을 수 있도록 욕심, 그래서 때마다 최소 잎 노드 (통계 번만)를 선택할 수 있습니다, 후 리프 노드를 삭제 응답은 한 번만 계산하고, 구조가 내림차순으로 (C)의 배열 순서가 할당 DFS에 의하면, (보장 아들 <아버지)
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; CONST의 INT N = 1E4 + 7 ; INT의 N, ANS, CNT, C [N], S [N]; 벡터 < INT > G [N]; 보이드 DFS는 ( int로 U를 INT FA) { S [U] = C의 [++ CNT]; 위한 ( int로 I = 0 ; I <는 G를 [U] 크기는 (); 나는 ++) 경우 (! G [U] [I] = FA) DFS (G [U] [I], U); } INT 의 main () { 는 scanf ( " %의 D ' , N); ...에 대한( int로 I = 1 ; i가 N <], X, Y 난 ++)는 scanf ( " % d 개 %의 D ' , X, Y), G [X] .push_back (Y), G를 [Y] .push_back (X) ; 위한 ( int로 I = 1 ; 나는 <= N; 내가 ++)는 scanf를 ( " %의 D ' , C [I]); 정렬 (c + 1 , C + N + 1 ), 리버스 (c + 1 , C + N이 + 1 ); 위한 ( int로 I = 2 ; 나는 <= N; 내가 ++) ANS + = C를 [I]; 의 printf ( " % D \ 없음 " , ANS); DFS ( 1 , 0); 위한 ( int로 I = 1 ; 나는 <= N; 내가 ++)에서 printf ( " %의 D " , S [I]); }
이자형
아, 치즈! 정신적으로 어떤 제목! 그러나, 나는 복잡한 파생 상품과 갈 통합을 생각하고 싶습니다! 사실,이 방법은 그 다음도 계승하는 것이다하는 (D)의 각 분할한다.
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; CONST INT 개조 1E6 + = 3 ; INT의 X, D, N, FAC [개조]; INT qpow ( INT A, INT의 b) { INT RET = 1 ; 반면 (b) { 경우 (B & 1 ) = RET RET 1ll * *는 %의 모드; = 1ll * A * %의 개조, B >> = 1 ; } 반환 RET를; } INT 의 main () { FAC가 [ 0 ] = 1 ; ...에 대한( int로 I = 1 ; i가 개조 <; 내가 ++) FAC [I] = 1ll FAC * [I- 1 ] * % 나 개조; INT Q]는 scanf ( " %의 D ' , Q); 반면 (Q-- ) { 는 scanf ( " % D % D % D ' , X, D, N); 만약 (! d)의 printf ( " % D \ 없음 " , qpow (X, N)); 또 { X = 1ll * X * qpow (d, mod- 2 ) %의 모드; 만약 (! X || N- X + 1 > = 개조) 풋 ( " 0 "); 사람 의 printf ( " % D \ 없음 " , 1ll의 *의 FAC의 [X + N- 1 ] * qpow (FAC [X- 1 ] mod- 2 ) %의 개조 * qpow (d, n)의 %의 개조); } } }
에프
너무 뜨거운 쓰지 않는다.
결과 : rank200, 평가 + = 30