Codeforces 라운드 # 587 (사업부. 3)

주제 링크 : 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 }
코드보기

 

추천

출처www.cnblogs.com/chuyds/p/11572650.html