Codeforces 라운드 # 629 (사업부. 3)
A. 정제 문제
출석 문제.
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; 형식 정의를 오래 오래 LL; 무효화 () {해결 CIN, A, B LL 사항 >> >> B 단계; 경우 (a %의 B == 0 ) COUT << " 0 \ n ' ; 다른 COUT << B 형 * (A / B + 1 ) -a << " \ n ' ; } INT 의 main () { INT t, CIN >> t; 반면 (t-- ) ) (해결; 반환 0 ; }
B. K 번째 아름 다운 문자열
B은 산술 서열 랭킹 개의 인접하는 차이의 제 1 발견 후 이동.
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; 보이드 () {해결 INT N, K, N CIN >> >> K; INT의 L = N- (2) ; INT의 합 = 1 스텝 = 1 ; 반면 (+ 합 공정 <= K) { 합계 + = ++ 단계 ; - L; } K - = 합; 문자열 S = 문자열 (N, ' ' ); S [1] = S [N- 1 -k = ' B ' ; COUT << S << " \ n ' ; } INT 의 main () { INT t, CIN >> t; 반면 (t-- ) ) (해결; 반환 0 ; }
C. 삼항 XOR
큰 수는 때 더 이상 이견을.
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; 무효화 () {해결 INT N; CIN >> N; 문자열 의; CIN은 >> 이야; 문자열 S1, S2; 부울 플래그 = 진정한 ; 대 ( 숯 C : (S)) { 경우 (c == ' 2 ' ) { 경우 (플래그) { S1 + = ' 1 ' ; S2 + = ' 1 ' ; } 다른 { S1 + = ' 0 ' ; S2 + = ' 2 ' ; } } 다른 경우 (c == ' 1 ' ) { 경우 (플래그) { S1 + = ' 1 ' ; S2 + = ' 0 ' ; 플래그 = 거짓 ; } 다른 { S1 + = ' 0 ' ; S2 + = ' 1 ' ; } } 또 { S1 + = ' 0 ' ; S2 + = ' 0 ' ; } } COUT << S1 << " \ n " << S2 << " \ n ' ; } INT 의 main () { INT t, CIN >> t; 반면 (t-- ) ) (해결; 반환 0 ;
D. 회전 목마
토론의 포인트.
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; 무효화 () {해결 INT N; CIN >> N; int로 A [N]을; 대 ( INT 및 I : a) >> CIN I; INT의 입술 [N] = {}; bool에 동일한 =를 참 ; 위한 ( INT 난 = 1 ; N I <; I ++) 경우 (a [I] = A [I-! 1 ]) 동일한 = 거짓 ; 경우 (동일) { 채우기 (입술, 입술 + N, 1 ); } 다른 경우 (N %의 2== 0 ) { 위해은 ( INT는 전 = 0 ; 나는 <N; I ++) 입술 [I] = (I & 1 ? 1 : 2 ); } 다른 { 위해은 ( INT는 전 = 0 ; I <N; I ++ ) { 경우 (a [I] == A [(I + 1 ) %의 N]) { 대 ( INT J = I- 1 ; J> = 0 ; j--) 입술 [J] = (j는 1 ? 1 : 2 ); 대 ( INT J = I + 2; J <N; ++ J) 입술 [J] = (j는 1 ? 2 : 1 ); 입술 [I] = 입술 [(I + 1 ) %의 N] = (I & 1 ? 1 : 2 ); 휴식 ; } } } 경우 (입술 [ 0 ] == 0 ) { 입술 [ 0 ] = 3 ; 위한 ( INT 난 = 1 ; N I <; I ++) 입술 [I] = (I & 1 ? 1 : 2 ); } cout을<< * max_element (입술, 입술 + N) << " \ n ' ; 위한 ( INT 난 = 0 ; I <N; I ++) COUT << 입술 [I] << " \ n " [내가 N- == 1 ]; } INT 의 main () { INT t, CIN >> t; 반면 (t-- ) ) (해결; 반환 0 ; }