字符串
leohujx
这个作者很懒,什么都没留下…
展开
-
hdu5371
这道题目当时做的时候先用manacher处理过,但是之后的求法太有问题了,所以一直WA。 我们可以发现,题目中所给的三部分,其实就是两个回文子串,我们这样定义这个N-sequence 。。。i。。。j。。。,把i当做第一个回文子串的中心(用mancher处理过后,相当于这里是另外新加的一个数字),j为第二个回文子串的中心,那么我们先将i+p[i] (p[i]为以i为中心的回文子串半径),那么从i原创 2015-08-12 17:24:56 · 606 阅读 · 0 评论 -
hdu5304
BC的题出的真的太木有层次了。。让我这种渣渣怎么活。。不知道以后有dv1,dv2后会不会有所改善。。 首先,要求出所有的回文子串,因为子串长度最大为20w,所以我们得用接近线性的方法来求才行。此时,Manacher算法就派上了用场。它能以O(n)的效率求出以每个字符为中心的最长回文子串的长度。 Manacher具体的思想还是不难懂的,只要好好参悟下,给个链接:http://blog.sina.c原创 2015-08-03 17:21:55 · 658 阅读 · 0 评论 -
scu 4438 Censor
之前做过类似的题目,不过因为匹配串长度较短,所以都是直接模拟的,而此题字符串的长度比较长,所以我们得用KMP。 先用KMP得到匹配串w的next数组,然后匹配两个串,边匹配边用栈模拟,栈维护主串每次匹配到匹配串的哪个位置,然后如果匹配到了整个串,那么将栈顶的 |匹配串 |全部删除,然后使得匹配串的位置移动到当初记录的位置,继续与主串进行匹配。#include<stdio.h> #include<i原创 2015-10-01 17:51:14 · 589 阅读 · 0 评论