#問題の意味
最大値の符号、所定数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 }
#問題の意味
文字列操作を行うことができる数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