后缀数组
文章平均质量分 75
yrleep
大学毕业不久,ios游戏自由开发者。
展开
-
poj 3261 后缀数组
二分+后缀数组#include #include #include #include using namespace std;const int maxn=2e4+509;int *rank,height[maxn],sa[maxn];int r[maxn];inline bool cmp(int *r,int a,int b,int l){ return r[a]=原创 2013-08-07 00:21:14 · 906 阅读 · 0 评论 -
poj 3415
单调队列+后缀数组#include #include #include using namespace std;const int maxn=2e5+19;int r[maxn];int *rank,height[maxn],sa[maxn];int wx[maxn],wy[maxn],cnt[maxn];char a[maxn],b[maxn];struct{ l原创 2013-08-07 20:35:52 · 759 阅读 · 0 评论 -
poj 3294 Life Forms
后缀数组的题目,把后缀连接起来,这个还是先二分答案,然后选取一段连续的height值,判断这些height代表的后缀有没有覆盖一半以上的字符串。得出答案的长度之后还要在枚举连续的heigh,判断有没有答案,有的话标记其中一个。最后再按照sa输出答案。这样就可以保证字典序。#include #include #include using namespace std;const i原创 2013-08-11 20:10:07 · 718 阅读 · 0 评论 -
poj 1226
跟3294比较类似,但是不需要输出具体的串,比较简单,只要把串反转连接上去解法就一样了。#include #include #include using namespace std;const int maxn=1e5+9;int r[maxn];int c[maxn];char a[1111];int n,m;int *rank,height[maxn],sa[maxn];原创 2013-08-11 20:35:41 · 684 阅读 · 0 评论 -
hdu 4436 str2int 后缀数组
递推的办法不难想到,但是要去重,那就要后缀数组来找最长前缀了。后面递推的没想好,写搓了。#include #include #include #include #include using namespace std;const int maxn=1e5+1e5+9,mod=2012;char a[maxn];int r[maxn];int next[maxn];lon原创 2013-11-13 00:49:51 · 1072 阅读 · 0 评论