PAM
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
Colorful String
题目链接:Colorful String建立回文树,记录每种回文串的长度以及结尾位置。并且计算出每种不同本质的回文出现次数。枚举本质不同的回文串,找到出现的区间,然后预处理前缀和,求出出现的字母个数即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=3e5+原创 2020-11-14 16:37:16 · 337 阅读 · 0 评论 -
[SHOI2011]双倍回文
在建立PAM求len的同时,我们要求出trans。trans 指针的含义是小于等于当前节点长度的一半最长回文后缀。当我们新建一个节点后,如果它的长度小于等于 2,那么这个节点的 trans 指针指向它的 fail 节点否则的话,我们同理从它父亲的 trans 指针指向的节点开始跳 fail 指针直到跳到某一个节点所表示的回文串的两侧都能扩展这个字符并且拓展后的长度小于等于当前节点长度...原创 2020-01-11 11:11:29 · 292 阅读 · 0 评论 -
回文串
枚举分割线,对两边分别求最大回文串然后加起来。可以PAM或者马拉车。因为每次只插入一个字符,所以总共复杂度是 O(n*log26) ,或者 O(n)。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing na...原创 2020-01-10 21:38:57 · 260 阅读 · 0 评论