![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
huanzhizun
这个作者很懒,什么都没留下…
展开
-
在可解时间之内判断回文串算法(非后缀数组)
推荐题:CodeForces 245H。原创 2014-06-05 15:02:23 · 557 阅读 · 0 评论 -
回文串的hash解法
#include #include #include #include #include #define maxn 1000010 #define inf 31 using namespace std; char s[maxn]; int N; unsigned long long bit[maxn],f[maxn],t[maxn]; void init(void) { bit[原创 2014-06-09 14:54:12 · 1347 阅读 · 0 评论 -
hdu 5157 Harry and magic string(manacher+dp)
我们可以先用mancher算法对字符串进行处理,把以每个点为中心的回文串半径求出来,然后进行处理。 加入对以p为中心的点,从p-r[i]+1~p都是回文串的开头,那么对于每个回文串(开头是j)只要记录结尾从1~j-1的回文串个数,我们可以用dp记录以每个点为结尾的回文串个数,s[i]=sigma(dp[i]),则是结尾从1~j-1的回文串个数。那么对这个中心点来说一共的回文串对应该有:s[p-r原创 2015-01-09 11:15:27 · 706 阅读 · 1 评论 -
manacher算法:回文串的O(n)算法
一般来说求回文串用hash或者后缀数组,但后缀数组是O(nlog(n)),hash比较麻烦,所以我们可以换一种O(n)的求回文串的算法。 对于回文串一般来说会有奇数和偶数之分,但是我们可以把串的头尾加上#号再把每个字符串之间加上#号,然后求每个点以它为中心的最长半径,对于偶数会问它的中心是#。 #include #include #include #include using namespac原创 2015-01-09 11:10:20 · 735 阅读 · 0 评论