noi2015模板-最小表示

来源:互联网 发布:python 中英文对照 编辑:程序博客网 时间:2024/06/08 03:47
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>using namespace std;#define rep(i, l, r) for (int i = l; i <= r; i++)#define REP(i, l, r) for (int i = l; i >= r; i--)#define MAXN 100010char ch[MAXN];int a[MAXN], n;inline int read() {    int x = 0, f = 1; char ch;    while (ch<'0' || ch>'9') {if (ch == '-') f = -1; ch = getchar();}    while (ch>='0' && ch<='9') x = x*10 + ch - '0', ch = getchar();    return x*f;}inline int minimum(int *a, int n) {    int I = 0, J = 1, k = 0;    for (; I<n && J<n && k<n; ) {        if (a[(I+k)%n] == a[(J+k)%n]) k++;        else {            if (a[(I+k)%n] > a[(J+k)%n]) I += k+1;            else J += k+1;            if (I == J) J++;            k = 0;        }    }    return min(I, J) + 1;}int main() {    int T_T; T_T = read();    while (T_T--) {        scanf("%s", ch);        n = strlen(ch);        rep(i, 0, n-1) a[i] = ch[i];        printf("%d\n", minimum(a, n));    }    return 0;}

0 0
原创粉丝点击