
回文树
Cymbals
Public void effect()
展开
-
CF-932G Palindrome Partition(回文树等差优化)
给定一个串,把串分为偶数段假设分为了s1,s2,s3…sk求,满足s1=sk,s2=sk−1… 的方案数。当你把原串S变成S′=S[1]S[n]S[2]S[n−2]… 后,这题的问题就变成了有多少种切分S’的方法使得每一段都是回文串。(这个转化已经很神仙了,这道题就出到这里我都觉得已经很nb了)回文切分方法这个东西是一个经典的n方dp,dp[i]表示当前前缀i有多少种切分方法,dp[i]...原创 2019-10-15 20:28:35 · 488 阅读 · 0 评论 -
CodeForces - 17E E. Palisection(回文树)
In an English class Nick had nothing to do at all, and remembered about wonderful strings called palindromes. We should remind you that a string is called a palindrome if it can be read the same way b...原创 2018-09-17 19:13:13 · 355 阅读 · 0 评论 -
ACM-ICPC 2018南京赛区网络赛 I.Skr (回文树)
题目:https://nanti.jisuanke.com/t/30998计蒜客开了禁止复制,我挂了破解网页限制的脚本能复制但是不太好看,就不贴题目了。题目大意是给出一个数字串,求其本质不同的回文子串的和。一开始没看到“本质不同”,上来就想跑马拉车 + Sam,重新读题后扑街。后来知道是回文树的题,学完了回文树才补。在回文树建立的过程中自带去重,所以只需要跑一遍记录答案就好了。...原创 2018-09-14 19:16:03 · 397 阅读 · 3 评论 -
好好写一个带注释的回文树模板
——我发现我快忘了QWQQQQQQ,赶紧整理一下。struct Pam { int next[maxn][26]; int fail[maxn]; int len[maxn];// 当前节点表示回文串的长度 int cnt[maxn];// 当前节点表示回文串的出现次数 int num[maxn];// 到当前节点这里有多少本质不同的回文子串 int S[maxn]; int la...原创 2018-10-11 21:46:58 · 300 阅读 · 0 评论 -
讨论一下2018南京的M.Mediocre String Problem
快12点了= =。实在是忍不住想切这题,写个博客记录一下思路明天再搞(虽然这篇博客过了审核的时候我应该又开始搞了)。题目简化后是这样的,给两个串s和t,求从s中取一个子串与t的一个前缀连接后能组成回文串的个数,但是要求从s中取的子串长度要大于所选择的t的前缀。一开始漏看了后半段的条件…一想这不是sam的裸题吗,s串倒着建sam,然后t串进去走,走不动了就立马停,接着ringt集合大小搞一通。...原创 2018-12-02 15:38:50 · 802 阅读 · 0 评论 -
2019牛客多校第六场 C.Palindrome Mouse(回文树)
给一个串,问这个串里所有本质不同的回文子串,有多少对满足一个串是另一个的子串。这题现场过的人很少啊,题解也给了个蛮复杂我还没看懂的带log的做法,其实了解回文树的话特别好想,我们现场写了一个O(n)的做法(在牛客跑了72ms)。回文树还算是个新东西,还没有被玩坏,我以前刷的回文树套题基本都算是板子题,最近多校有几道回文树就进入了灵活运用的范畴了,出题人开始准备玩坏这个算法了,以后这都是基操。见...原创 2019-08-04 00:57:17 · 640 阅读 · 3 评论 -
2019HDU多校第二场 1009.I Love Palindrome String(回文树)
问所有长度的回文子串满足其一半(向上取整)也是回文串的个数。对原串建出回文树,并且建立fail树,一个节点在fail树上的父亲是其回文后缀,因此从根节点向下dfs,某个长度的一半如果曾经出现过,那么就找到了长度的一半也是回文的回文子串。统计其出现次数,即可求出答案。#include <bits/stdc++.h>using namespace std;typedef lon...原创 2019-07-26 16:01:13 · 268 阅读 · 0 评论 -
牛客多校第四场 I.string(后缀自动机+回文树)
问一个串内,能选出多大的一个子串集合,满足两两子串直接互不相同而且不存在一个子串是另一个子串的反串。首先显然,重复出现的子串只能选一个,也就是只能选本质不同的子串。于是考虑将原串和其反串建立广义sam,此时原反串相同的部分全部压缩在了一起,对这个sam统计本质不同的子串个数,此时的统计结果中,符合题目条件(反串不同)的子串统计了两次(正串一次反串一次),不符合题目条件的串统计了一次。但是显然回...原创 2019-07-27 19:29:40 · 269 阅读 · 0 评论 -
P4287 [SHOI2011]双倍回文(回文树建trans)
题目:https://www.luogu.org/problem/P4287求最长双倍回文。容易发现双倍回文的前半部分一定与整个回文在同一条fail链上,因此可以想出一种跳fail链统计答案的解法。对于每个点,往上跳fail,直到跳到一个点,这个点的长度*2刚好是起始点的两倍,再判断一下起始点长度能否被4整除,都满足即可统计答案。该解法如同各种自动机的连续跳fail做法一样,在fail树是...原创 2019-10-05 20:31:29 · 218 阅读 · 0 评论