字符串
赤兔码
我服了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Round #723 (Div. 2) E. Oolimry and Suffix Array
E. Oolimry and Suffix Array 题意: 给长度为n的数组a,代表字符串的后缀数组的rk值,给一个值k代表字符串的字符集个数。求符合后缀数组为数组a的字符集大小<=k的方案数。 思路: 按照rk排序遍历,比较rk[i]和rk[i]+1这两个后缀,如果这两个后缀第一个字母不同,肯定合法,如果相同,就通过a数组看一看是否合法,如果不合法则代表这个必须严格大于。 我们就可以把模型抽象成0,1,1代表右移,0代表左移,求(1,1)到(n,k)的方案数这样如果不合法则一定是1后面跟着个0,原创 2021-06-07 18:26:48 · 437 阅读 · 0 评论 -
KMP的Next数组应用总结
Next数组求法 不用初始化,因为Next数组是递推出来的。用法为getFail(s,strlen(s)). const int MAX_N=101000; char str[MAX_N],pattern[MAX_N]; int Next[MAX_N]; void getFail(char *p,int plen){ int i; Next[0]=0;Next[1]=0; ...原创 2019-11-04 23:34:32 · 323 阅读 · 0 评论 -
可持久化Trie树
模板 const int MAX_N=301000; int trie[MAX_N*32][2],latest[MAX_N*32]; int s[MAX_N],root[MAX_N],tot; void insert(int k,int k1,int val,int i,int deep){ if(deep<0){ latest[k1]=i; return; } int x=(...原创 2019-11-03 12:40:58 · 306 阅读 · 0 评论 -
后缀数组模板
后缀数组以及height数组求法模板 基数排序 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring>` using namespace std; const int MAX_N=1e5+100; char s[MAX_N]; int sa[MAX_N],cn...原创 2019-09-03 17:50:56 · 127 阅读 · 0 评论 -
KMP模板
kmp #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAX_N=1010; char str[MAX_N],pattern[MAX_N]; int Next[MAX_N]; int cnt; void getFail(char *p,in...原创 2019-09-03 22:24:42 · 163 阅读 · 0 评论 -
HDU 6704 后缀数组
首先应该注意二分找前缀相同的区间时不能直接通过比较字符串,因为字符串比较不是o(1),而是o(n),md坑死了,还有这个二分真难写。 后缀数组+RMQ+主席树,不难但是真的麻烦。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<...原创 2019-09-04 18:07:33 · 252 阅读 · 0 评论
分享