摘要:
就是把字符串转变成一个树,每个节点连接下一个字符,用空间换时间。 对于区分大小写或不区分的题目,只需要改变ch[][26]的值就行了。 ch[u][x]表示u节点(标号决定)下一个x字符节点的标号。 如果题目让记录附加值,那就用val[标号]在插入时记录一下就好了。 #include<iostrea 阅读全文
摘要:
线性筛 int prime[maxl]; bool mark[maxl]; int tot; inline void oula() { for(int i=2;i<=maxl;i++) { if(!mark[i])prime[++tot]=i; for(int j=1;j<=tot and i+pr 阅读全文
摘要:
参照 有两个数字n,k,两个大小为n的数组a,b,将其分成k-n(包含)份,使得 R=sigma(ai)/sigma(bi) 最大。 我们将之化成di=ai-r*bi,求d的和,二分求出来r的最大值就行了。 POJ2976 //01分数规划 #include<iostream> #include<c 阅读全文
摘要:
KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法。 问题:求a字符串与b字符串中子串相同的串首位置。 暴力就不说了,设a长m,b长n,每次枚举比对每个字符,复杂度O(nm)。 阅读全文
摘要:
P2375 [NOI2014]动物园 为什么复制题目连字体大小一块复制过来了(雾) 我竟然会做NOI的题目辣~\(≧▽≦)/~(看的题解 总而言之,这是一道简单的KMP问题。题面简直是给没学过KMP的人看的(比如我)。 我们发现,这个所谓的num数组和nxt有异曲同工之妙。但是我们对于不能重合这一块 阅读全文