주제 링크 : https://codeforces.com/contest/1216
에이:
문제의 의미는 : 단지는 주어진 문자열 B, A로 B, B에 실행 작업 Q 연산의 최소 수, A, B의 첫번째 짝수 중 동일하도록.
아이디어 : 다시 잘, 그것은 조건 변화에 부합하지 않는 반복.
1 #INCLUDE <iostream> 2 #INCLUDE <cstdio> 3 #INCLUDE <CString을> 4 5 이용 스페이스 성병; 6 7 INT의 N, ANS; 8 문자열 a 및 9 10 INT 의 main () 11 { 12 CIN N >> >> a 및 13 INT의 LEN = N; (14) 의 경우 (N % 2 ! = 0 ) LEN - = 1 ; 15 (16) 에 대해 ( int로 I = 0 ; I <렌; 나는 ++) 17 { 18 의 경우 (a [I] == ' ' ) 19 { 20 의 경우 (a [I + 1 ] == ' B ' ) 나 ++ ; 21 다른 22 { 23 A [I + 1 ] = ' B ' ; 24 ANS ++ ; 25 내가 ++ ; 26 } 27 } 28 다른 29 { 30 의 경우 (a [I + 1 ] == ' ' ) I ++ ; 31 다른 32 { 33 A [I + 1 ] = ' ' ; 34 ANS ++ ; 35 나는 ++ ; 36 } 37 } 38 } 39 40 COUT << ANS << ENDL; 41 COUT << a 및 42 반환 0 ; 43 44 }
비:
질문의 의미 : n 개의 목표물을 촬영, 각각 다른 소비가 있고, 촬영이 적어도 소비 할 수 있습니다 주문 것에 물었다.
아이디어 : 욕심, 촬영을 시작하는 가장 큰 순으로, 분류.
1 #INCLUDE <iostream> 2 #INCLUDE <cstdio> 3 #INCLUDE <알고리즘> 4 5 이용 스페이스 성병; 6 CONST의 INT의 MAXN = 1000 + 10 ; 7 INT의 N, ANS, A [MAXN], B [MAXN]; 8 9 부울 CMP ( INT의 X, INT의 Y) 10 { 11 창 x> Y; 12 } 13 14 INT 주 () 15 { 16 CIN >> N; (17) 에 대한이 ( 값 int = 1을 0 ; i가 N <; 내가 ++ ) 18 { 19 CIN >> A [I]; 20 B [I] = A [I]; 21 } 22 23 정렬 (A, A + N, CMP); 24 (25) 에 대해 ( int로 I = 0 ; I <N은, 내가 ++ ) 26 { 27 ANS + = A [i]는 * I + 1 ; 28 } 29 30 COUT << ANS << ENDL; 31 대 ( INT난 = 0 ; 난 <N; 난 ++ ) 32 { 33 대 ( INT의 J = 0 N J <; J ++ ) 34 { 35 의 경우 (a [I] == B [J]) 36 { 37 COUT << J + 1 << " " ; 38 B [J] = - 1 ; 39 } 40 } 41 } 42 반환 0 ; 43 }
디:
문제의 의미 : n 개의 종류의 칼은, 각각 k 개의 개인에게 칼을 가지고 있어요, 각각 칼 도난, 도난 S와 각 도난 나머지 칼을 알기 위해, 칼 같은 유형입니다 a의 수 (1) 하는 2 에 .. N- 형은, 사람이 적어도 칼을 훔쳐 부탁드립니다.
아이디어 : 가장 큰 번호와 다른 나머지 수를 가지고 N- 뺄셈, 계산 된 최대 공약수가이 숫자를 뺀 도난 칼의 각각의 수를의 차이는 축적 된 GCD의 수에 추가
1 <iostream> 등 2 #INCLUDE <cstdio> 3 #INCLUDE <. 비트 / stdc ++ H> 4 5 이용 스페이스 성병; 6 타입 정의 긴 긴 LL; 7 CONST의 INT MAXN 2E5 + = 10 ; (8) LL의 N, A [MAXN], B [MAXN, SS; 9 10 INT ) (주 11 { 12 는 scanf ( " %의 LLD " , N); (13) 에 대한이 ( 값 int = 1을 0 ; i가 N <; 내가 ++ ) 14 { 15 는 scanf ( " %의 LLD " , & A [I]); 16 개 SS = 최대 (a [i]를, SS); 17 } 18 대 ( int로 I = 0 ; I <N은, 내가 ++) B [I] = SS - A [I]; 19 20 LL의 C = 0 ; (21) 에 대한이 ( int로 I = 0 ; I <N은, 내가 ++ ) 22 { 23 C = __gcd (C, B [I]); 24 } 25의 LL에서의 ANS = 0 ; (26) 에 대한( int로 = 1을 0 ; i가 N <; 내가 ++ ) 27 { 28 ANS + = B [내가] / C; 29 } 30 COUT << ANS << ' ' << (C); 31 반환 0 ; 32 }