BZOJ4480:快乐的jyy(回文自动机)
题面
题意:给出两个串,问所有回文串在两个串出现次数之积之和。
应该是回文自动机果题
插完一个串后重置last,再插入另一个串
每个状态对于两个串分别统计Right集的大小
就可以统计答案了
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <cstring>using namespace std;
#define mmst(a, b) memset(a, b, sizeof(a))
#define mmcp(a, b) memcpy(a, b, sizeof(b))typedef long long LL;const int N=200200;int n;
int son[N][26],pre[N],len[N],r[N][2],last,cnt;
char s[N];
LL ans;void Insert(int pos,int ops)
{int x=last,ch=s[pos]-'A';while(s[pos-len[x]-1]!=s[pos])x=pre[x];if (!son[x][ch]){len[++cnt]=len[x]+2;int y=pre[x];while(s[pos-len[y]-1]!=s[pos])y=pre[y];pre[cnt]=son[y][ch];son[x][ch]=cnt;}x=son[x][ch];r[x][ops]++;last=x;
}int main()
{pre[1]=pre[0]=cnt=1;len[1]=-1;scanf("%s",s+1);n=strlen(s+1);for(int i=1;i<=n;i++)Insert(i,0);last=0;scanf("%s",s+1);n=strlen(s+1);for(int i=1;i<=n;i++)Insert(i,1);for(int i=cnt;i>=2;i--)if(pre[i]>1)r[pre[i]][0]+=r[i][0],r[pre[i]][1]+=r[i][1];for(int i=2;i<=cnt;i++)ans+=(LL)r[i][0]*r[i][1];cout<<ans<<endl;return 0;
}
BZOJ4480:快乐的jyy(回文自动机)相关推荐
- BZOJ 4480: [Jsoi2013]快乐的jyy(回文自动机)
Description [故事背景] JYY在JSOI有很多很多的好朋友,比如PUPPY,KFC还有PUPPUP.因为 有了这么多的好朋友,所以JYY每天都很快乐.某天,JYY发现好朋友之间关 系的好 ...
- Bzoj4480: [Jsoi2013]快乐的jyy 广义后缀自动机 倍增 哈希 manacher
国际惯例的题面: 有人说这是回文自动机的板子题,然而我是不会这种东西的. 于是,我选择用更一般性的方法去解决这个题,就是那一堆东西了. 首先,我们把两个串同时插入一个广义SAM里,拓扑排序维护每个节点 ...
- 【回文自动机】bzoj3676 [Apio2014]回文串
回文自动机讲解!http://blog.csdn.net/u013368721/article/details/42100363 pam上每个点代表本质不同的回文子串.len(i)代表长度,cnt(i ...
- 算法学习:回文自动机
[定义] [自动机] 参照AC自动机 [前置知识] [AC自动机] [manacher] 其实不学这两个也可以,但是学过之后会更方便理解 [解决问题] 主要解决回文串的问题 能求出 字符串中回文子 ...
- 回文树(回文自动机) - URAL 1960 Palindromes and Super Abilities
Palindromes and Super Abilities Problem's Link: http://acm.timus.ru/problem.aspx?space=1&num=1 ...
- 【知识总结】回文自动机(Palindrome_Automaton)
参考资料:Palindromic Tree--回文树[处理一类回文串问题的强力工具](请注意,其中似乎有一些错误) 回文自动机似乎和回文树是同一个东西qwq? 回文自动机(PAM)是一种处理回文串的工 ...
- 论如何优雅的处理回文串 - 回文自动机详解
写在前面 最近无意中看到了这个数据结构,顺便也就学习了一下. 而且发现网上关于这个算法的描述有很多地方是错的,在这里做了一些更正. 处理字符串的算法很多: KMP,E-KMP,AC自动机,后缀三兄弟: ...
- BZOJ2342[Shoi2011]双倍回文——回文自动机
题目描述 输入 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. 输出 输出文件只有一行,即:输入数据中字符串的最长双倍回文子串的长度,如果双倍回文 ...
- BZOJ4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)
好难啊..根本不会做..基本上是抄Claris... 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4044 (luogu) ...
最新文章
- 发票管理及打印系统的部分代码
- 【效率】推荐10个堪称神器的网站!
- 工作199:获取接口token
- 定时执行java程序_如何让Java程序定时运行
- springboot2.0 redis EnableCaching的配置和使用
- linux python json,在Python中使用JSON
- 【cv2】:关于opencv-Python的函数
- 程序员不会SQL有多难?高级工程师:可能工作都找不到!
- python表白代码-如何用Python代码向心爱的姑娘花式表白?
- python matplotlib.pyplot 填充曲线下面积
- java截取utf8字符串_java中常用的字符串的截取方法
- Linux学习_系统文件IO
- 调整SumatraPDF暗黑模式
- 《P2SGrad Refined Gradients for Optimizing Deep Face Models》论文阅读
- 路由器指定dns解析服务器设置
- python主成分得分系数矩阵_用spss得出的成分矩阵就是初始因子载荷矩阵吗?成分得分系数矩阵又是什么...
- c语言把char转化为string,浅析string 与char* char[]之间的转换
- 京东商品主图定时替换,90%卖家这样做
- 区块链培训中的Golang为什么这么重要?怎么学?
- USB HUB芯片 FE8.1替代方案