A. 제일 서브 세그먼트
질문의 의미하는 것은 : 당신에게 일련의 숫자를 줄이 가장 긴 평균 최대 길이없고 소수를 찾을 수 있습니다
해결 방법 : 직접 최대 값, 최대 값을 평균 한 다음 최대 길이 찾을 수 있습니다 (주의를 마지막 프로세스가)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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을 선택;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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를 나눌 수하는 것만으로는 충분하지 않습니다
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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 ; }