首页 > 其他分享 >PAM(回文自动机/回文树)

PAM(回文自动机/回文树)

时间:2022-08-25 19:11:08浏览次数:60  
标签:idx LL tr len fail 自动机 PAM 回文

一个由小写字母构成的字符串 \(s\),对于 \(s\) 的每个位置,求出以该位置结尾的回文子串个数。
这个字符串被进行了加密,除了第一个字符,其他字符都需要通过上一个位置的答案来解密,强制在线。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 5e5 + 10;
char s[N];
LL n, k;
struct PAM{
	LL tr[N][26], fail[N], len[N], cnt[N], idx, last;
	PAM(){
		fail[0] = 1, fail[1] = 1;
		len[1] = -1;
		idx = 1;
	}
	void insert(char c, LL i){
		LL p = get_fail(last, i);
		if (!tr[p][c - 'a']){
			fail[ ++ idx] = tr[get_fail(fail[p], i)][c - 'a'];
			tr[p][c - 'a'] = idx;
			len[idx] = len[p] + 2;
			cnt[idx] = cnt[fail[idx]] + 1;
		}
		last = tr[p][c - 'a'];
	}
	LL get_fail(LL u, LL i){
		while(i - len[u] - 1 < 0 || s[i - len[u] - 1] != s[i]){
			u = fail[u];
		}
		return u;
	}
}pam;
int main(){
	ios::sync_with_stdio(false);cin.tie(0);
	cin >> s;
	n = strlen(s);
	for (int i = 0; i < n; i ++ ){
		s[i] = (s[i] - 'a' + k) % 26 + 'a';
		pam.insert(s[i], i);
		k = pam.cnt[pam.last];
		cout << k << " \n"[i == n - 1];
	}
	return 0;
}

标签:idx,LL,tr,len,fail,自动机,PAM,回文
From: https://www.cnblogs.com/Hamine/p/16625431.html

相关文章

  • [HNOI2004] L 语言 题解(AC 自动机上 dp)
    前言:原版数据超弱,爆搜就能过(即洛谷里面80分的数据),在此不多说,这里讲的是正解。(如果不是正解我还敢写题解吗)唔······话说洛谷里的题解用的都有状压,蒟蒻表示这题不......
  • [USACO12JAN]Video Game G【AC自动机+DP】
    “Canamanstillbebraveifhe’safraid?”“Thatistheonlytimeamancanbebrave.”每天六点多起床,整理好寝室内务后就去图书馆研读论文和处理邮件,完成后......
  • ac自动机
    模板voidinsert()//建trie树{intp=0;for(inti=0;str[i];i++){intt=str[i]-'a';if(!tr[p][t])tr[p][t]=++idx;......
  • [JSOI2007]文本生成器【AC自动机+DP】
    下定决心想要将这份爱意传达给你,与你在一起的每一刻总是那么值得珍藏,你的存在左右着我的思绪,实在是不想错过这样的美好,真的不和我在一起吗?我的学术生涯,虽然有点奇妙,......
  • louguP3966 [TJOI2013]单词【AC自动机】
    小时候一直不理解为什么老人会呆呆地坐着,望着远方很久很久少年不会知道自己的勇气意味着什么,他只是在武汉四十度的天气下奋力奔跑。在军训伊始终于成功联系上了导师,一个......
  • sudo 报错,pam_open_ession Permission denied
    可能原因系统中所配置的Session类型的PAM模块在验证相关状态时失败,可能原因如下:验证sudo权限时失败:/etc/sudoers文件未给相关用户配置充足的权限。验证系统资......
  • leetcode5-最长回文子串
    最长回文子串中心扩展法从中心向两侧扩展,分为两种情况:一种是奇数长度,一种是偶数长度,需要分开讨论。classSolution{publicStringlongestPalindrome(Strings)......
  • 区间DP の 题(内含 最长回文串,石子合并,删除字符串,乘积最大,释放囚犯)
    乘积最大  由于题目给定的是m,需要分解成m+1部分的乘积,不难想到乘号刚好是m个,那么该题就转化成了m个乘号的插入方式。  最优子结构分析:    设数字字符串为a1a......
  • KMP,AC 自动机,以及 fail 树
    开坑待填。六个月后,yukari1735准备开始填坑。全文大概无图!\(\bold{Border}\)对于一个字符串\(s\),若\(s\)的一个前缀\(p\)同时也是\(s\)的后缀且\(p\neqs\),那......
  • [2016年NOIP普及组] 回文日期
    [2016年NOIP普及组]回文日期题目大意:用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月 份,最后 2 位代表日期,一个日期是回文的,当且仅当表示这个日......