
ACM_KMP
文章平均质量分 80
逍遥丶綦
这个作者很懒,什么都没留下…
展开
-
KMP hihoCoder1015 KMP算法
人太蠢,,看了一天的KMP。。刚开始看训练指南的,,后来才惊奇的发现原来刘汝佳写的f数组并不是Next数组!总觉得和之前看过的完全不一样。。。后来又百度了一下KMP,研究了很久,然后用自己的逻辑写了一份http://blog.chinaunix.net/uid-23767307-id-5033555.html这个人把KMP大篇幅的讲了,,大家可以看看。。个人认为原创 2015-08-13 22:22:45 · 1871 阅读 · 0 评论 -
KMP UVALive326 Period
传送门:点击打开链接题意:给一个字符串s,求所有的前缀中是否能能通过一段循环得到,如果能,输出位置和循环的次数,循环次数越小越好。思路:先通过KMP求出Next数组(我的Next数组的写法,是Next[0]=0,这个看个人习惯之后直接判断Next[i] && (i + 1) % (i - Next[i] + 1) == 0就能知道是否可以搞定了详细证明可以去看训练指南,上面讲的很详原创 2016-03-17 15:57:52 · 1017 阅读 · 0 评论 -
最小表示法+hash hdu2609 How many
传送门:点击打开链接题意:有n个串,每个串是一个环,如果通过移动环之后能一样,认为是同一种串。问有多少种串。思路:很明显我们首先要把认为是一样的串变成一样的,比如找到这个串的最小表示法,所以这道题的目的就是为了求最小表示法,然后用hash搞一搞排序然后去重,或者是直接插入到set里面取size都是可以的KMP(复杂度O(n))来搞最小表示法暂时还不会,先挖个坑,我这里还有一种通过二分+原创 2016-03-17 20:05:23 · 1389 阅读 · 0 评论 -
KMP+hash hdu3746 Cyclic Nacklace
传送门:点击打开链接题意:已知原串,在首或者尾加上一些字符后,变成至少有一个循环节循环2次变成新串思路:我们能很容易的发现,在首添加字母和在尾添加字母效果是一样的,所以我们只考虑在末尾添加首先我们都知道,KMP可以用来求前缀中的最长循环节长度。知道了这个有什么用呢?我们枚举所有的前缀,然后取得循环节的长度w,与此时后面剩下的字符串的长度t去比较如果后面剩下的字符串等于原字符串的原创 2016-03-17 20:12:28 · 1164 阅读 · 0 评论 -
KMP+区间dp csu1620 A Cure for the Common Code
传送门:点击打开链接题意:可以把字符串用过括号折叠起来。现在给你原串,问折叠后最短是多少,len思路,首先,我们通过O(n^2)来预处理出每个区间里的最短循环节。之后,我们直接按照区间dp用记忆化搜索去搞就行了。#include #include #include #include #include #include #include #include #inclu原创 2016-03-18 13:19:58 · 1208 阅读 · 0 评论 -
KMP+dp Codeforces346B Lucky Common Subsequence
传送门:点击打开链接题意:告诉你A,B,C,求A和B的最长公共子序列,并且C不是最长公共子序列的子串思路:先求C的Next数组,利用Next数组来完成状态的转移。而且,用KMP来优化的dp,通常都是往后更新的写法。对于打印路径,我们能用DFS来完成,这里有个我觉得很不错的写法,就是直接利用状压,来保存数字,感觉这样可以避免写一个结构体,方便的多然后dp部分,就是在求最长公共子序原创 2016-03-30 19:02:37 · 982 阅读 · 0 评论