$O(n)$的最小表示法
存个板子
int get_min(char a[N], int n)
{
static char b[N * 2];
for(int i = 0; i < n; i ++) b[i] = b[i + n] = a[i];
int i = 0, j = 1, k = 0;
while(i < n and j < n)
{
for(k = 0; k < n and b[i + k] == b[j + k]; k ++);
if(k == n) break;
if(b[i + k] > b[j + k])
{
i += k + 1;
if(i == j) i ++;
}
else
{
j += k + 1;
if(i == j) j ++;
}
}
k = min(i, j);
for(int i = 0; i < n; i ++) a[i] = b[k + i];
a[i + n] = 0;
return k;
}
while循环里面应该是b数组
谢谢大佬
我昨天用你的板子的时候wa了(哈哈)
模板错了
确实qwq
NB
orz
tql