- 1#include
- 2#include
- 3#include 4#include
- 5#include <string> 6#include
- 7#include
- 8#include
- 9#include
- 10#include
- 11#include <set> 12#include
- 13#include
- 14#include
- 15#include
- 16#include
- 17#include
- 18#include
- 19#include
- 20#include
- 21#include
- 22#include
- 23#include
- 24#include
- 25 #defineMax(a,b) ((a)>(b)?(a):(b)) 26 #defineMin(a,b) ((a)<(b)?(a):(b)) 27 #defineFOR(a,b,c) for (ll (a)=(b);(a)<(c);++(a)) 28 #defineFORN(a,b,c) for (ll (a)=(b);(a)<=(c);++(a)) 29 #defineDFOR(a,b,c) for (ll (a)=(b);(a)>=(c);--(a)) 30 #defineFORSQ(a,b,c) for (ll (a)=(b);(a)*(a)<=(c);++(a)) 31 #defineFORC(a,b,c) for (char (a)=(b);(a)<=(c);++(a)) 32 #defineFOREACH(a,b) for (auto &(a) : (b)) 33 #definerep(i,n) FOR(i,0,n) 34 #definerepn(i,n) FORN(i,1,n) 35 #definedrep(i,n) DFOR(i,n-1,0) 36 #definedrepn(i,n) DFOR(i,n,1) 37 #defineMAX(a,b) a = Max(a,b) 38 #defineMIN(a,b) a = Min(a,b) 39 #defineSQR(x) ((LL)(x) * (x)) 40 #defineReset(a,b) memset(a,b,sizeof(a)) 41 #definefi first 42 #definese second 43 #definemp make_pair 44 #definepb push_back 45 #defineall(v) v.begin(),v.end() 46 #defineALLA(arr,sz) arr,arr+sz 47 #defineSIZE(v) (int)v.size() 48 #defineSORT(v) sort(all(v)) 49 #defineREVERSE(v) reverse(ALL(v)) 50 #defineSORTA(arr,sz) sort(ALLA(arr,sz)) 51 #defineREVERSEA(arr,sz) reverse(ALLA(arr,sz)) 52 #definePERMUTE next_permutation 53 #defineTC(t) while(t--) 54 #defineforever for(;;) 55 #definePINF 1000000000000 56 #definenewline '\n' 57
- 58 #definetest if(1)if(0)cerr 59 using namespace std;
- 60 using namespace std;
- 61typedef vector<int> vi;
- 62typedef vector vvi;
- 63typedef pair<int,int> ii;
- 64typedef pair<double,double> dd;
- 65typedef pair<char,char> cc;
- 66typedef vector vii;
- 67typedeflong long ll;
- 68typedef unsignedlong long ull;
- 69typedef pair l4;
- 70 const doublepi = acos(-1.0);
- 71
- 72
- 73 string str;
- 74 intsmallestRepresentation(const string&str)
- 75 {
- 76 inti =0, j =1, k =0, len = str.length();
- 77 while(i < len && j < len && k < len)
- 78 {
- 79 intcompare = str[(j+k)%len] - str[(i+k)%len];
- 80 if(!compare)
- 81++k;
- 82 else
- 83 {
- 84 if(compare >0) j += k+1;
- 85 elsei += k+1;
- 86 if(i == j) j +=1;
- 87k =0;
- 88 }
- 89 }
- 90 return min(i, j);
- 91 }
- 92
- 93 int main()
- 94 {
- 95 intT; cin >> T;
- 96 repn(kase, T)
- 97 {
- 98cin >> str;
- 99cout << smallestRepresentation(str) +1<< newline;
- 100 }
- 101}
来源: