Codeforceのcodecraft-20 DIV2

A.グレードの割り当て

問題の意味

最大値の符号、所定数N、Mが最大値である、平均需要を達成することができる、不変のままでなければなりません

説明

ANS =分(M、合計)

1の#include <ビット/ STDC ++。H>
 2  の#define LL長い長い
 3  の#define PII対<整数、整数>
 4  の#define PLL対<-1,11,11->
 5  の#define Fiの第
 6  の#define SE第
 7  の#define PB一back
 8  使って 名前空間はstdを、
9  CONST  INT N = 1E5 + 10 10  INT [N]。
11  ボイド解く(){
 12      のint N、M。
13      CIN >> N >> M。
14      INT合計= 0 ;
15      のためにINT iは= 1 ; iが<= N; I ++ ){
 16          CIN >> [I]。
17          和+ = [I]。
18      }
 19      であれば(和> = M)
 20          COUT << M << ENDL。
21      {
 22          COUT <<和<< ENDL。
23      }
 24  }
 25  INT メイン(){
 26      のint T。
27      cinを>> トン。
28      しばらく(t--){
 29          解きます()。
30      }
 31  
32 }

 B.String変更

問題の意味

文字列操作を行うことができる数k(1 <= K <= N)、iを1からKを計算N-K 1、S [I〜iはK-1 +]全て逆+、です操作をより満足kが存在する場合、辞書最小であるように文字列の後に、少なくともKを見つけます。

説明

まず我々は、文字列sをしている
私たちはs1s2s3 ... SNとしてそれを表現することができ、我々はKを選択します。
SKSK-1sk-2 ... s1sk:最初の逆の後に + 1sk + 2 ... SN
の位置は、その後、SKを観察していますそれが変更さ起こらなかっただろう。
SKSK + 1S1 ... SK-2SK:第2逆を受ける -1sk + 2 ... SKSK + 1点の位置は、Snを観察した後、変更されません。
第三逆場合:SKSK + 1sk + 2 ... s2s1sk + 3 ... SKSK + 再SNが観測された後、位置1sk + 2は変更されません。
......
文字が+ 1sk + 2 ... SNがSKSKしなければならない文字列の末尾が逆転された後というように、S'のn-K + 1の前に
、S K-1前の文字s1s2s3で観察することによって見つけることができます... SK-1は後半のに移動するが、方向は不明。
反転回数が直接反転の奇数最後スプライスを逆転させる必要があることである場合、スプライス偶数番号N-K + 1であります

Oの時間複雑度(N 2

1の#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  INT T、N、ANS。
4  ストリングS、MN。
5  ワーク(int型K)
 6  {
 7      場合(K == N)
 8      {
 9           RES = S。
10          逆(res.begin()、res.end())。
11          リターンのres;
12      }
 13      INT T = N-K + 1 14      であれば(T%2 == 0 15      {
 16           RES = s.substr(K- 1、N-K + 1 )。
17の          RES + = s.substr(0、K- 1 )。
18          リターンのres;
19      }
 20       RES = s.substr(K- 1、N-K + 1 )。
21      ストリング TMP = s.substr(0、K- 1 )。
22      逆(tmp.begin()、tmp.end())。
23      RES = RES + TMP。
24      リターンのres;
25  }
 26  INTmain()の
 27  {
 28      のscanf(" %dの"、&T)。
29      一方(T-- 30      {
 31          のscanf(" %d個"、&N)
32          CIN >> S。
33          ANS = 1、MN = S。
34          のためにINT iは= 2 ; iが<= N; I ++ 35              であれば(ワーク(I)< MN)
 36                  MN =仕事(I)、ANS = I。
37          COUT << MN << ENDL << ANS <endl;
38      }
 39 }

 

#C

#問題の意味

#説明

#D

#問題の意味

#説明

#E

おすすめ

転載: www.cnblogs.com/hhyx/p/12424197.html