M-솔루션 프로그래밍 콘테스트

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

추천

출처www.cnblogs.com/hfctf0210/p/10961924.html