随笔分类 -  字符串之回文自动机

摘要:题意:要求维护两端加点的字符串,以及查询本质回文串个数和所有回文串个数 题解:pam,两端加点过程详见ioi2017国家集训队论文,维护一个最长回文前缀和最长回文后缀即可,fail不用两个,能前后共用一个.维护所有回文串个数,就是用增量法,每加一个点计算含这个点的回文串的个数(即当前回文后缀),即f 阅读全文
posted @ 2019-04-14 13:17 walfy 阅读(146) 评论(0) 推荐(0) 编辑
摘要:题意:给一个字符串,和每个字符代表的val,每个回文串的价值就是前半部分的val26进制%777777777,求价值第k小的回文串 题解:建个pam,然后dfs两边(0,1),统计价值sort一遍就好了 k爆int了,= =白wa了半天 阅读全文
posted @ 2018-10-11 19:05 walfy 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题解:先建pam,然后在fail树上dfs,从上到下的链如果有当前长度最远回文串的一半,那么更新答案 // pragma GCC optimize(2) // pragma GCC optimize(3) // pragma GCC optimize(4) // pragma GCC optimiz 阅读全文
posted @ 2018-10-03 13:01 walfy 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题意:找一个串中的最长连续两个回文子串长度 题解:建两个回文树,一个正着,一个反着,每次add之后last的长度就是后缀最长的回文串长度,然后两边加一遍即可 / Problem: 2565 User: walfy Language: C++ Result: Accepted Time:164 ms 阅读全文
posted @ 2018-09-06 00:21 walfy 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题意:求两个串的公共回文子串个数 题解:建两个回文自动机,从0和1各跑一边就是答案了,因为对于回文自动机来说,从头开始dfs就能找出该字符串的所有回文串 // pragma GCC optimize(2) // pragma GCC optimize(3) // pragma GCC optimiz 阅读全文
posted @ 2018-09-05 16:01 walfy 阅读(238) 评论(0) 推荐(0) 编辑
摘要:题意:求本质不同的回文子串的和 题解:先构造pam,然后根据pam的原理(ch表示在该节点表示的回文串两侧加上该字符)对于每个节点维护一个表示该节点字符串的值,加起来即可 // pragma GCC optimize(2) // pragma GCC optimize(3) // pragma GC 阅读全文
posted @ 2018-09-04 16:25 walfy 阅读(209) 评论(0) 推荐(0) 编辑
摘要:题意:字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最 大出现值。 题解:pam板子题 //cnt数组表示该节点代表的回文串出现次数,add时如果要新建节点,则说明出现了本质不同的子串 / Problem: 3676 User: walf 阅读全文
posted @ 2018-09-04 16:13 walfy 阅读(164) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示