교육 Codeforces 라운드 60 (사업부 정격. 2) (ABC)

A. 제일 서브 세그먼트

질문의 의미하는 것은 : 당신에게 일련의 숫자를 줄이 가장 긴 평균 최대 길이없고 소수를 찾을 수 있습니다

해결 방법 : 직접 최대 값, 최대 값을 평균 한 다음 최대 길이 찾을 수 있습니다 (주의를 마지막 프로세스가)

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
CONST의  INT maxn 1E5 + = 10 ; 
타입 정의  LL;
INT A [maxn];
INT 의 main () {
     INT의 N; 
    CIN >> N;
    INT 맥스 = - 1 ;
    위한 ( int로 I = 1 ; i가 <= N; 내가 ++ ) { 
        CIN >> A [I]; 
        맥스 = 최대 (맥스하는 [I]); 
    } 
    INT ANS = 1 ;
    INT의 CNT =0 ;
    위한 ( int로 I = 1 ; i가 ++; 나는 <= N ) {
         경우 (a [I] == 맥스 && A [I + 1 !] == 맥스 && I = N) { 
            CNT ++ ; 
        } 
        다른 {
             경우 (a [I] == A [I- 1 ]) CNT ++ ; 
            ANS = 최대 (CNT, ANS); 
            CNT = 0 ; 
        } 
        // COUT << CNT << ENDL; 
    } 
    COUT << ANS << ENDL; 
 
 
    반환  0 ; 
}
코드보기

B. 감정 표현

제목의 의미 : 숫자 n은 각 번호가 선택을 반복 할 수 있도록 m의 수, 최대 알아낼 K 배까지 선택할 수 있습니다;

해결 방법 : 순서, 가장 큰 K 두 번째로 큰 +1을 선택;

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
CONST의  INT maxn 2E5 + = 10 ; 
타입 정의  LL; 
LL A [maxn]; 
부울 CMP (LL의 X, Y의 LL)은 {
     반환 x> y로; 
} 
INT 의 main () {
     INT의 N; 
    LL의 K, m; 
    CIN >> N >> K >> m;
    위한 ( int로 I = 1 ; i가 <= N; 내가 ++ ) { 
        CIN >> A [I]; 
    } 
    종류 (A + 1 , A + 1 +N, CMP);
    경우 (m> = K) { 
        COUT <<는 K * A [ 1 ] << ENDL; 
    } 
    다른  경우 (K %의 (m + 1 ) == 0 ) { 
        COUT << (A [ 1 ] * m + A [ 2 ]) * (K / (m + 1 )) << ENDL; 
    } 
    다른 {
         // COUT << (K / (m + 1)) << ENDL;
        // COUT << (K %의 (m + 1)) << ENDL; 
        COUT << (A [ 1 ]의 * m + A [ 2 ]) * (K / (m + 1 )) + A [ 1 ] * (K %의 (m + 1 )) <<  ENDL;
    }
 
 
    반환  0 ; 
} 
/ * 
6 9 6 
6 6 6 6 6 6 
6 6 9 
6 6 6 6 6 6 
* /
코드보기

C. 매직 선박

질문의 의미 : 둘러보기, 시작과 바람 방향의 일을 종료, 바람 + 네비게이션 궤도 원하는 방향으로 이동되어, 당신은 일의 최소 수의 끝에 도달하고자하는 (단지 바람을 따라) 이동하지 않도록 선택할 수 있습니다;

해결 방법 : 그냥 독창적 인 접근 방식 갱스 보면, 혼란 봐 ~

하루 X 바람에 직접 이분법 적 답변을 장소에 보트를 허용 한 후 결정 결승선에 도달 할 수있는 능력을 가진 어떤 방향 X 일;

바람 방향 접두사와 그것을 유지하는. 1E9는 ~ 1E18를 나눌 수하는 것만으로는 충분하지 않습니다

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
CONST의  INT maxn 1E5 + = 10 ; 
타입 정의  LL; 
LL SX, SY; 
게요 GX, GY; 
게요 N; 
LL의 DX [maxn], DY [maxn]; 
문자 S [maxn];
부울 검사 (LL MID) { 
    LL X = + SX 미드 / N의 *의 DX [N] + DX [미드 %의 N]; 
    LL의 Y = + SY 미드 / N *에서의 Dy [않음] + DY [미드 %의 N];
    경우 (ABS (X-GX) + ABS (Y-GY) <= MID) 반환  사실 ;
    돌아  거짓 ; 
} 
INT 의 main () { 
    CIN >> SX SY >> >> >> GXGY; 
    CIN >> N; 
    CIN >> S + 1 ; 
    DX [ 0 ] = 0 , DY [ 0 ] = 0 ;
    위한 ( int로 I = 1 ; i가 <= N; 내가 ++ ) { 
        DX [내가] = DX [I- 1 ]; 
        DY [I] = (DY) [I- 1 ];
        경우 (S [I] == ' U ' ) DY [I] ++ ;
        다른  경우 (S [I] == ' D ' )의 DY [I] - ;
        다른  경우 (S [I] ==' L ' ) DX [I] - ;
        다른  경우 (S [I] == ' R ' ) DX [I] ++ ; 
    } 
    LL에서 L = 0 , R = 1E18; 
    중간 LL; 
    LL ANS = 1LL * (1E18 + 10 );
    반면 (L <= R) { 
        중간 = (L + R) >> 1 ;
        경우 (검사 (중간)) { 
            R = 중간 1LL; 
            ANS = 중간; 
        } 
        다른 L = 중간 + 1LL; 
    } 
    경우 (ANS == 1E18을 +10 ) COUT << " -1 " << ENDL;
    다른 COUT << ANS << ENDL; 


    반환  0 ; 
}
코드보기

 

추천

출처www.cnblogs.com/lin1874/p/11410981.html