博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1511 [POI2006]OKR-Periods of Words kmp+乱搞
阅读量:4681 次
发布时间:2019-06-09

本文共 1584 字,大约阅读时间需要 5 分钟。

1511: [POI2006]OKR-Periods of Words

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 351  Solved: 220
[][][]

Description

一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, 当且仅当存在串B, 使得 A = PB. 如果 P A 并且 P 不是一个空串,那么我们说 P 是A的一个proper前缀. 定义Q 是A的周期, 当且仅当Q是A的一个proper 前缀并且A是QQ的前缀(不一定要是proper前缀). 比如串 abab 和 ababab 都是串abababa的周期. 串A的最大周期就是它最长的一个周期或者是一个空串(当A没有周期的时候), 比如说, ababab的最大周期是abab. 串abc的最大周期是空串. 给出一个串,求出它所有前缀的最大周期长度之和.

Input

第一行一个整数 k ( 1 k 1 000 000) 表示串的长度. 接下来一行表示给出的串.

Output

输出一个整数表示它所有前缀的最大周期长度之和.

Sample Input

8
babababa

Sample Output

24
 

直接求一下next,之后把所有的next向前找到最后一个非零地方的Next。 

然后扫一遍对于每个next非零位置的周期来说就是i-new_next[i] 
还是之前的那个性质,n-next[i]是最小循环周期,推一下就变成最长了。

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 7 #define ll long long 8 #define inf 1000000007 9 #define N 100000710 11 #define Wb putchar(' ')12 #define We putchar('\n')13 #define rg register int14 using namespace std;15 inline int read()16 {17 int x=0,f=1;char ch=getchar();18 while(!isdigit(ch)){
if(ch=='-')f=-1;ch=getchar();}19 while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}20 return x*f;21 }22 inline void write(ll x)23 {24 if(x<0) putchar('-'),x=-x;25 if (x==0) putchar(48);26 int num=0;char c[20];27 while(x) c[++num]=(x%10)+48,x/=10;28 while(num) putchar(c[num--]);29 }30 31 int n,t[N],f[N];32 ll ans;33 char s[N];34 35 void make_nxt()36 {37 t[0]=-1;38 for (rg i=0,j;i

 

转载于:https://www.cnblogs.com/fengzhiyuan/p/8983582.html

你可能感兴趣的文章
Java之字符流操作-复制文件
查看>>
iOS开发UI篇—实现一个私人通讯录小应用(二)
查看>>
iOS开发UI篇—UITableview控件使用小结
查看>>
lesson1 预备知识
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
23 Java学习之RandomAccessFile
查看>>
SSH远程会话管理工具 - screen使用教程
查看>>
hibernate validation HV000030: No validator could be found for constraint
查看>>
Telink MESH SDK 如何使用PWM
查看>>
LR SP PC
查看>>
C# 图片识别(支持21种语言)【转】
查看>>
jQuery基础教程
查看>>
P2709 小B的询问
查看>>
第三组的抓包作业
查看>>
ILNumerics项目的应用之线性方程
查看>>
django考点
查看>>
python-socket
查看>>
Android中intent如何传递自定义数据类型
查看>>
android基础---->子线程更新UI
查看>>