トピックへのリンク: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及びそれぞれが盗まれた残りの剣を知るために、剣の同じタイプであります数1、2 ... 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 }