
字符串
文章平均质量分 52
Arlia
老年人记性不好
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BKDR Hash
int BKDR(char s[20]){ int seed=131; int Hash=0,i=0,Len=strlen(s); while(i<Len)Hash=Hash*seed+str[i++]; return (Hash%Max);//保证Hash值在[0,Max)之间 }原创 2018-05-17 13:53:02 · 321 阅读 · 0 评论 -
AC自动机
AC自动机 注意:Root不要设为0号点(我也不知道为什么,反正过不了样例,大概是我的写法不能将0号点作为根) #include<cstdio> #include<cstring> #include<iostream> #include<queue> using namespace std; char Mode[1000010];int tot,...原创 2018-05-14 19:23:21 · 137 阅读 · 0 评论 -
马拉车
马拉车 找回文串的算法 void Mana(int n){ Init(n); int len=n*2+1; int Ans=0,Ansp=0,p=0,pos=0; for(int i=1;i<=len;i++){ if(i<pos)R[i]=min(R[p*2-i],pos-i+1); else R[i]=1; ...原创 2018-05-14 19:30:38 · 438 阅读 · 0 评论 -
最小表示法
最小表示法 把一个字符串连成一圈,这一圈字符串中字典序最小的那一个就是该字符串的最小表示法。 如BCDA的最小表示法就是ABCD。 int Get(){ int i,j; for(i=0,j=1;i&amp;lt;l &amp;amp;&amp;amp; j&amp;lt;l;){ int k; for(k=0;k&amp;lt;l;k++) if原创 2018-05-14 19:38:34 · 218 阅读 · 0 评论 -
KMP
KMP 注意:Fail[1]=0(代码中的字符数组下标从1开始) Fail数组有两个性质: ①有关循环节:对于一个长度为Len的字符串,它的循环节长度是Len-Fail[Len](数组下标从1开始);如果Len%(Len-Fail[Len])!=0,就没有循环节。 ②有关树:如果把所有的Fail值连上边,那么所构成的图是一棵树。 bool KMP(int s,int e,int id...原创 2018-05-14 19:45:23 · 216 阅读 · 0 评论 -
Trie
Trie void Ins(char s[12]){ int p=0,len=strlen(s); for(int i=0;i<len;i++){ int c=s[i]-'a'; if(!trie[p].son[c])trie[p].son[c]=++tot; p=trie[p].son[c]; } if(...原创 2018-05-14 19:48:10 · 167 阅读 · 0 评论 -
康托展开
来自newuser的链接:康托展开+逆康托展开原创 2018-05-16 19:44:15 · 200 阅读 · 0 评论 -
BZOJ3670 [NOI2014]动物园 [KMP]
BZOJ3670 [NOI2014]动物园 [KMP] 题目描述 题目传送门 题解 这道题主要利用了Fail数组(本题中的next数组)的性质。 熊猫:“对于字符串S的前i个字符构成的子串,既是它的后缀又是它的前缀的字符串中(它本身除外),最长的长度记作next[i]。” 设num[i]num[i]num[i]表示字符串的前iii位中前缀和后缀相等的字符串个数(没有“...原创 2018-08-01 20:37:23 · 259 阅读 · 0 评论