#587(DIV。3)ラウンドCodeforces

トピックへのリンク:https://codeforces.com/contest/1216


問題の意味は:のみ、与えられた文字列のB、にB、bに実行可能な操作、Q動作の最小数、Bの最初の偶数番号のいずれかが等しくなるようにします。

アイデア:それは条件の変更を満たしていない、再びうまく繰り返します。

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <CStringの>
 4   
5  使用 名前空間STD。
6   
7  INT N、ANS。
8  文字列9   
10  のint main()の
 11  {
 12      CIN >> N >> 13      int型 LEN = N。
14      であれば(N%2!= 0)LEN - = 1 ;
15      
16      のためにint型 I = 0 iがLEN <; I ++17      {
 18          であれば([I] == ' A ' 19          {
 20              であれば([I + 1 ] == ' B ')は、i ++ 21              他の
22              {
 23                  [I + 1 ] = ' B ' 24の                  ANS ++ ;
25                  私は++します;
26              }
 27          }
 28          
29          {
30              であれば([I + 1 ] == ' A ')は、i ++ 31              他の 
32              {
 33                  [I + 1 ] = ' A ' 34の                  ANS ++ ;
35                  私は++します;
36              }
 37          }
 38      }
 39      
40      COUT << ANS << ENDL。
41      COUT << 42      リターン 0 ;
43      
44 }
コードの表示

B:

質問の意味:n個のターゲットを撮影し、それぞれが異なる消費を持ち、そして撮影が少なくとも消費するかもしれ注文何に尋ねました。

アイデア:貪欲、撮影を開始するには、最大から順に、ソートされました。

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <アルゴリズム>
 4   
5  使用 名前空間STD。
6  のconst  int型 MAXN =  + 10 7  int型N、ANS、[MAXN]、B [MAXN]。
8   
9  BOOL CMP(int型のx、int型のY)
 10  {
 11      リターン X> Y。
12  }
 13   
14  のint main()の
 15  {
 16      CIN >> N。
17      のためにint型 I = 0 ; iがN <; Iは++ 18      {
 19          CIN >> [I]。
20件の          B [I] = [I]。
21      }
 22      
23      ソート(+ N、CMP)。
24      
25      のためにint型 i = 0 ; iがn <; iは++ 26      {
 27の          ANS + = [I] * I + 1 28      }
 29の     
30      COUT << ANS << ENDL。
31      のためのint型I = 0 ; 私は、n <; 私は++ 32      {
 33          のためにINT J = 0 ; J <N; J ++ 34          {
 35              場合([I] == B [J])
 36              {
 37                  COUT << J + 1 << "  " ;
38件の                  B [J] = - 1 39              }
 40          }
 41      }
 42      リターン 0 43 }
コードの表示

D:

問題の意味:n種類の剣は、各々がk個の個人に剣を持っているM、各々が剣盗まれた、盗まれたS及びそれぞれが盗まれた残りの剣を知るために、剣の同じタイプであります数12 ... n-は、少なくとも男の剣を盗むでお願いします。

アイデア:最大数と他の残りの数取りN-減算し、算出した最大公約数がこれらの数値を減算盗まれた剣のそれぞれの数であり、差が累積GCDの数に加えていることです

図1は、 <入出力ストリーム>含む
 2の#include <cstdioを>
 3の#include <ビット/ STDC ++ H>
 4   
5  使用 名前空間STDを、
6のtypedef 長い LL。
7  のconst  int型 MAXN = 2E5 + 10 8  LL nを、[MAXN]、B [MAXN]、SS。
9   
10  のint main()の
 11  {
 12      のscanf(" %のLLD "、&N)
13      のためにint型 I = 0を私は++; iがN < 14     {
 15          のscanf(" %のLLD "、および[I])。
16の          SS = MAX([I]、SS)。
17      }
 18      のためのint型 i = 0 ; iがn <; iは++)B [I] = SS - [I]。
19      
20      LL C = 0 21      のためには、int型 i = 0 ; iがn <; iは++ 22      {
 23          C = __gcd(C、B [I])。
24      }
 25      LL ANS = 0 26      のためのint型 I = 0 ; iがN <; Iは++ 27      {
 28の          ANS + = B [I] / C。
29      }
 30      COUT << ANS << "  " << C。
31      リターン 0 ;
32 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/chuyds/p/11572650.html