
回文树
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 · 225 阅读 · 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^6 Sol 首先发现每次求的串都是原串去掉前后 i−1i−1i-1 位得到的串 一个套路,把串翻折,又因为 borderborderborder 长度可能大于...原创 2018-06-08 07:49:46 · 685 阅读 · 0 评论 -
Bzoj4044/HackerRank Virus synthesis
题意 你要用 ATGCATGCATGC 四个字母用两种操作拼出给定的串: 1. 将其中一个字符放在已有串开头或者结尾 2. 将已有串复制,然后 reversereversereverse ,再接在已有串的头部或者尾部 一开始已有串为空。求最少操作次数。 len≤100000len≤100000len\le100000 Sol 首先有个结论 每次形成偶数长度回文串的最后一步一定是操作...原创 2018-06-08 08:01:14 · 273 阅读 · 0 评论 -
CF17E Palisection
题意 给定一个长度为n的小写字母串。问你有多少对相交的回文子串(包含也算相交) 相交的回文子串个数 mod 51123987mod 51123987mod\ 51123987 Sol 求相交的回文子串不太好求 考虑用总数减去不相交的回文串个数 那么考虑求以一个点结尾的后缀回文串的贡献: 就是以它后面的点为开头的前缀回文串的个数 正反两遍回文树求一下就好了 ...原创 2018-06-08 08:15:05 · 291 阅读 · 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 · 270 阅读 · 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 · 303 阅读 · 0 评论