博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SPOJ1812
阅读量:4542 次
发布时间:2019-06-08

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

来自蒟蒻XXJ的做题记录

题解可以去看看wjmzbmr的ppt

在这里记录几个问题:

1.居然在extend的过程中忘记了==要更新lth

2.居然直接用了儿子匹配到的长度去更新父亲==

3.按照lth进行排序就可以出来一个天然的按照先儿子后父亲的顺序排好的序列。

代码:

#include
#define mem(i,j) memset(i,j,sizeof(i))#define mcy(i,j) memcpy(i,j,sizeof(i))using namespace std;const int MAXN=200010;const int INF=1008610086;int n;void hello(){ freopen("a.in","r",stdin); freopen("a.ans","w",stdout);}struct SAM{ int trans[MAXN][26],lth[MAXN],fa[MAXN]; int last,cnt; int mp[MAXN],mx[MAXN]; SAM(){ cnt=0;last=++cnt; mem(trans,0);mem(fa,0); for(int i=1;i
sam.lth[j];}void input(){ scanf("%s",c); sam.build(c); for(int i=1;i<=sam.cnt;i++) rank[i]=i; sort(rank+1,rank+sam.cnt+1,cmp);}void xxj(){ while(scanf("%s",c)==1){ int len=strlen(c),ans(0),p=1; for(int i=0;i
sam.mx[index]) sam.mp[index]=sam.mx[index]; if(!sam.fa[index]) continue; if(sam.mx[index]) sam.mx[sam.fa[index]]=sam.lth[sam.fa[index]]; } mem(sam.mx,0); }}void output(){ int ans(0); for(int i=1;i<=sam.cnt;++i){ if(sam.mp[i]==INF) continue; ans=max(ans,sam.mp[i]); } cout<
<

转载于:https://www.cnblogs.com/Xiaojianxiang/p/6598101.html

你可能感兴趣的文章
C#中字符串转换成枚举类型的方法
查看>>
Airplace平台
查看>>
TinyOS实例介绍
查看>>
我是怎么定义微服务平台?
查看>>
python random
查看>>
input输入框只允许输入数字/ 数字+小数点/ 文字+字母/ 等解决方法
查看>>
【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)...
查看>>
mysql 5.6 参数详解
查看>>
求旋转数组的最小元素
查看>>
Gson解析Json数组
查看>>
Lintcode: Fast Power
查看>>
Pocket Gem OA: Log Parser
查看>>
枚举也能直接转换为对应的数值输出
查看>>
angularjs1-7,供应商
查看>>
让插件帮你优化代码
查看>>
Java之路——Java初接触
查看>>
2018.12.27学习JavaScript
查看>>
理工之 A+B Problem III
查看>>
软件工程第一次作业
查看>>
【Android 界面效果24】Intent和PendingIntent的区别
查看>>