字符串
赤兔码
我服了
展开
-
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 · 283 阅读 · 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 · 277 阅读 · 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 · 252 阅读 · 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 · 103 阅读 · 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 · 133 阅读 · 0 评论 -
HDU 6704 后缀数组
首先应该注意二分找前缀相同的区间时不能直接通过比较字符串,因为字符串比较不是o(1),而是o(n),md坑死了,还有这个二分真难写。后缀数组+RMQ+主席树,不难但是真的麻烦。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<...原创 2019-09-04 18:07:33 · 213 阅读 · 0 评论