看一眼题。本质不同的字串数。

嘴角微微上扬。

每一次加一个数输出一个答案。

笑容渐渐消失。

等等,\(SAM\)好像也可以求本质不同的字串。

设当前字符串用\(x\)表示,每次插入完成后\(ans\)加上\(len[x]-len[fa]\)就行了。

嘴角微微上扬。

等等,炸空间了。

笑容渐渐消失。

用\(map\)不就得了。

嘴角再次上扬。

写完过了。

笑出了声。

翻题解,时看到了\(SA\)。

笑容渐渐僵硬。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<map>
using namespace std;
#define int long long
const int N=101000;
int n,ans;
struct SAM{
int tot,u,len[N*2],fa[N*2];
map<int,int>trans[N*2];
void init(){tot=u=1;}
void ins(int c){
int x=++tot;len[x]=len[u]+1;
for(;u&&trans[u][c]==0;u=fa[u])trans[u][c]=x;
if(u==0)fa[x]=1,ans+=len[x];
else{
int v=trans[u][c];
if(len[u]+1==len[v])fa[x]=v,ans+=len[x]-len[v];
else{
int w=++tot;len[w]=len[u]+1;
trans[w]=trans[v];
fa[w]=fa[v];
fa[x]=fa[v]=w;
ans+=len[x]-len[w];
for(;u&&trans[u][c]==v;u=fa[u])trans[u][c]=w;
}
}
u=x;
}
}sam;
int read(){
int sum=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return sum*f;
}
signed main(){
n=read();
sam.init();
for(int i=1;i<=n;i++){
sam.ins(read());
printf("%lld\n",ans);
}
return 0;
}

最新文章

  1. 2015.10.15class
  2. typedef 与define 的区别
  3. C# 把引用的dll嵌入到exe文件中
  4. Dozer应用——类之间值的映射
  5. 从 Auto Layout 的布局算法谈性能
  6. 28个MongoDB NoSQL数据库的面试问答
  7. Java集合类操作优化总结
  8. require 书写约定
  9. YKCW6-BPFPF-BT8C9-7DCTH-QXGWCYQ7PR-QTHDM-HCBCV-9GKGG-TB2TM
  10. oracle to_char()及to_date()函数使用
  11. c++代码的陪伴下----菜鸟的转变
  12. 深入浅出数据结构C语言版(20)——快速排序
  13. PHP判断是手机端还是PC端
  14. &lt;训练赛&gt; 垃圾陷阱
  15. python中的多线程和多进程编程
  16. Spring Cloud Feign 使用方法与性能优化
  17. 对象属性的描述:writable、enumerable、configurable
  18. BugFree设置邮箱通知(这里以163邮箱为例)
  19. 分布式系统CAP理论与CA选择
  20. VS的IISExpress配置通过IP访问程序

热门文章

  1. BA-WG-冷源
  2. CSTC 选课
  3. C# SortedDictionary&amp;lt;TKey, TValue&amp;gt; 类
  4. 区间最小值 线段树 (2015年 JXNU_ACS 算法组暑假第一次周赛)
  5. org.openqa.selenium.NoSuchElementException:
  6. Chrome Extension 的 webRequest模块的解读
  7. 《编程导论(Java)&amp;#183;1.4.1 范式》
  8. [think in java]第12章 通过异常处理错误
  9. CSU 1506 Problem D: Double Shortest Paths(最小费用最大流)
  10. 让ubuntu支持GBK编码AAAAA