トピックへのリンク:https://ac.nowcoder.com/acm/contest/887#question
タイトル効果:それは非常に小さな文字列に分割することができるように、「01」の文字列のグループに、各文字列が満たさとである「完全」。ストリングのそれよりも回転の文字列(正面を戻すために、iビットの任意の文字列であることが)小さくする場合、それは「完全」です。
レポートの問題解決:最大200直接列挙の文字列の長さは、暴力をシミュレートすることができます。
ACコード:
1の#include <ビット/ STDC ++。H> 2 の#define numm CH-48 3 の#defineのPdのputchar( ' ') 4 の#defineのPNのputchar('の\ n') 5 の#define PB一back 6 の#define Fiの第 7 の#define SE第 8 の#define FRE1 freopenは( "1.TXT"、 "R"、STDIN) 9 の#define fre2 freopenは( "3.txt"、 "W"、STDOUT) 10 の#defineデバッグ(引数...)COUT < <#args << " - >" <<引数<< "\ nを"; 11 使って 名前空間はstdを、 12テンプレート< RES){ 14 ブールフラグ= 偽。char型のCH; 15 一方(isdigit(CH = GETCHAR())!)(CH == ' - ')&&(フラグ= 真)。 16 のために(RES = numm; isdigit(CH = GETCHAR()); RESの=(RES << 1)+(RES << 3)+ numm)。 17 フラグ&&(RESの= - RES)。 18 } 19テンプレート<型名T> 20 ボイドライト(T X){ 21 であれば(X < 0)のputchar(' - ')、X = - X。 22 もし(X> 9)書き込み(X / 10 )。 23 のputchar(Xの%10 + ' 0 ' )。 24 } 25のtypedef 長い 長LL。 26 typedefの符号なしの長い 長いULL。 27 のconst int型 MAXN = 1010 ; 28 のconst int型 MAXM = 505 ; 29 のconst int型 MOD = 1E9 + 7 。 30 CONST INT INV2 = 500000004 。 31 のconst int型 N = 32 。 32ベクター< ストリング > ANS。 33 ブールチェック(文字列S){ 34 列一時=のS。 35 のために(int型 I = 0 ; iが(s.sizeを<)私は++ ){ 36 列TMP。 37 TMP = TEMP [s.size() - 1 ]。 38 TMP + = temp.substr(0、s.size() - 1 )。 39 もし(TMP <S)を返す 偽。 40 温度= TMP; 41 } 42 リターン 真。 43 } 44 のint main()の 45 { 46 INT _。 47 リード(_)。 48 一方(_-- ){ 49 ans.clear()。 50 文字列sの。 51 CIN >> S。 52 のint i = 0 ; 53 一方(iは< s.sizeを()){ 54台の int型の POS = I。 55 のための(int型J = I; J <s.size(); J ++ ) 56 であれば(チェック(s.substr(I、J-iは、+ 1 ))) 57 posが= J。 58 ans.pb(s.substr(I、POS-I + 1 ))。 59 I = POS + 1 。 60 } 61 のための(int型 i = 0 ; iは<ans.size(); iは++ ) 62 であれば(I == 0)COUT << ANS [I]。 63 他の coutの<< ' ' << ANS [i]は、 64 COUT << ENDL。 65 } 66 リターン 0 。 67 }