https://www.luogu.org/problemnew/show/SP8222#sub

http://www.spoj.com/problems/NSUBSTR/

翻译来自洛谷。

你得到一个字符串,最多由25万个小写拉丁字母组成。我们将 F(x)定义为某些长度X的字符串在s中出现的最大次数,例如字符串'ababaf'- F(x),因为有一个字符串'ABA'出现两次。你的任务是输出 F(x)每一个I,以使1<=i<=|S|.

water!

后缀自动机后对l排个序,对每个l更新其ans就做完了。

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
typedef long long ll;
const int N=;
struct tree{
int a[],fa,l;
}tr[N];
char s[N];
int last,cnt,ans[N];
int a[N],w[N],size[N];
inline void insert(int c){
int p=last,np=++cnt;
last=np;tr[np].l=tr[p].l+;
for(;p&&!tr[p].a[c];p=tr[p].fa)tr[p].a[c]=np;
if(!p)tr[np].fa=;
else{
int q=tr[p].a[c];
if(tr[p].l+==tr[q].l)tr[np].fa=q;
else{
int nq=++cnt;tr[nq].l=tr[p].l+;
memcpy(tr[nq].a,tr[q].a,sizeof(tr[q].a));
tr[nq].fa=tr[q].fa;tr[q].fa=tr[np].fa=nq;
for(;p&&tr[p].a[c]==q;p=tr[p].fa)tr[p].a[c]=nq;
}
}
size[np]=;
}
int main(){
scanf("%s",s);
int len=strlen(s);
last=cnt=;
for(int i=;i<len;i++)insert(s[i]-'a');
for(int i=;i<=cnt;i++)w[tr[i].l]++;
for(int i=;i<=len;i++)w[i]+=w[i-];
for(int i=;i<=cnt;i++)a[w[tr[i].l]--]=i;
for(int i=cnt;i>=;i--){
size[tr[a[i]].fa]+=size[a[i]];
ans[tr[a[i]].l]=max(ans[tr[a[i]].l],size[a[i]]);
}
for(int i=;i<=len;i++)printf("%d\n",ans[i]);
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

最新文章

  1. 和Java相关的书籍,想成为架构师的请收藏一下啊
  2. STL(1)
  3. javaweb-url /
  4. poco网络库分析,教你如何学习使用开源库
  5. sql server 2008 查询语句的红色波浪线
  6. SQL:42601
  7. JS原型的剖析与理解
  8. python django学习资料网站
  9. 记一次kali和win8.1的双系统修复!!
  10. Python修炼10------面向对象
  11. Hessian服务端和客户端示例
  12. 爬虫系列(1)-----python爬取猫眼电影top100榜
  13. 基于三层架构项目下的Ado【六】
  14. 洛谷P1073 Tarjan + 拓扑排序 // 构造分层图
  15. VMware12创建新的虚拟机及设置硬件环境
  16. 对象函数的readFileSyc类
  17. tftp
  18. CentOS中为新用户添加sudo权限
  19. SQL学习笔记四之MySQL数据操作
  20. CH6201走廊泼水节

热门文章

  1. Java连接redis集群操作存储、删除以及获取值
  2. Unity2017 经典游戏开发教程 算法分析与实现 (张帆 著)
  3. hdu2149Public Sale(巴什博弈)
  4. ReadyAPI教程和示例(一)
  5. uiautomatorviewer定位App元素
  6. git配置github链接
  7. python3爬虫-快速入门-爬取图片和标题
  8. Vuejs 基础与语法
  9. ajax的$.get()方法和tomcat服务器的交互
  10. 剑指offer-字符串的排列26