HDU 3746 Cyclic Nacklace
来源:互联网 发布:证券公司排名 知乎 编辑:程序博客网 时间:2024/05/16 01:38
题意分析:
题意相对难理解。提议就是在说给你一个字符串,可以在前面和后面添加小写字母来使字符串变成由一个循环节来循环得到。求最小添加的字符数。说白了就是在考察KMP算法的next函数的最小循环节。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#define MA 1000006
using namespace std;
int next[MA];
void getnext(char s[]) {
int i=0,j=-1,len = strlen(s);
next[0] = -1;
while(i<len) {
if(j==-1 || s[i] == s[j]) {
++i; ++j;
next[i] =j;
}
else j = next[j];
}
}
int main() {
char s[MA];
int t;
scanf("%d",&t);
while(t--) {
scanf("%s",s);
getnext(s);
int len = strlen(s),co;
co=len-next[len];
if(co==len) cout<<len<<endl;
else if(len%co==0) cout<<0<<endl;
else cout<<co-len%co<<endl;
}
return 0;
}
- HDU-3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU-Cyclic Nacklace-3746
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- c const在*号左右分别表示
- HOJ1010-JAVA
- 消除SDK更新时的“https://dl-ssl.google.com refused”异常
- Android简介
- hdu4982(思维题)
- HDU 3746 Cyclic Nacklace
- VS2012快捷键大全
- win 7 64位安装oracle 11g前须知
- eventfd与线程间通信
- LIstView中CheckedTextView的应用
- Big Number
- SDUTOJ Message Flood (STL容器求解)
- 接上面极光推送提到的原生推送(APNS)
- Linux系统最大进程数和单进程最大线程数