![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回文树
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
回文树模板
存代码 学习的博客 然后国家集训队2017年的论文在后面插入的IL void Extend(RG int pos, RG int c){ RG int p = last; while(s[pos - len[p] - 1] != s[pos]) p = fa[p]; if(!son[c][p]){ RG int np = ++tot, q = f...原创 2018-06-07 22:40:42 · 166 阅读 · 0 评论 -
CF961F k-substrings
题意给定一个字符串 SSS 求所有的 S[i,n−i+1]S[i,n−i+1]S[i,n-i+1] 的 borderborderborder 长度(最长的前缀等于后缀),要求长度是奇数 n≤106n≤106n\le 10^6Sol首先发现每次求的串都是原串去掉前后 i−1i−1i-1 位得到的串 一个套路,把串翻折,又因为 borderborderborder 长度可能大于...原创 2018-06-08 07:49:46 · 570 阅读 · 0 评论 -
Bzoj4044/HackerRank Virus synthesis
题意你要用 ATGCATGCATGC 四个字母用两种操作拼出给定的串: 1. 将其中一个字符放在已有串开头或者结尾 2. 将已有串复制,然后 reversereversereverse ,再接在已有串的头部或者尾部一开始已有串为空。求最少操作次数。 len≤100000len≤100000len\le100000Sol首先有个结论 每次形成偶数长度回文串的最后一步一定是操作...原创 2018-06-08 08:01:14 · 192 阅读 · 0 评论 -
CF17E Palisection
题意给定一个长度为n的小写字母串。问你有多少对相交的回文子串(包含也算相交) 相交的回文子串个数 mod 51123987mod 51123987mod\ 51123987 Sol求相交的回文子串不太好求 考虑用总数减去不相交的回文串个数 那么考虑求以一个点结尾的后缀回文串的贡献: 就是以它后面的点为开头的前缀回文串的个数 正反两遍回文树求一下就好了...原创 2018-06-08 08:15:05 · 242 阅读 · 0 评论 -
Aizu2292 Common Palindromes
题意我也不知道哪里来的OJ vjudgevjudgevjudge 上的 给定两个字符串 S,TS,TS,T ,询问 (i,j,k,l)(i,j,k,l)(i,j,k,l) 这样的四元组个数 使得 S[i,j],T[k,l]S[i,j],T[k,l]S[i,j],T[k,l] 是相等的回文串Sol回文树 记录 SSS 的每个回文串的出现位置的集合大小 匹配 TTT 记录其每个回文...原创 2018-06-08 08:33:25 · 206 阅读 · 0 评论 -
CF932G Palindrome Partition
传送门Sol首先 nnn 为奇数肯定无解当 nnn 为偶数时老套路,把串 SSS 变成 S1SnS2Sn−1S_1S_nS_2S_{n-1}S1SnS2Sn−1,设为 TTT那么满足条件的 SSS 的划分相当于 TTT 中的划分,使得每一段为长度为偶数的回文串下面就只考虑 TTT 的划分设 fif_ifi 表示前 iii 个字符合法划分的方案数,用 PAMPAMPAM 可以...原创 2018-12-21 18:48:21 · 240 阅读 · 0 评论