思路

两个字符串都插入回文自动机中(每次重置last)

最后统计两个right集合的大小就好了

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int Nodecnt,cnt[50100][2],trans[50100][26],fail[50100],len[50100],s[2][50100],last,n;
long long ans=0;
char S[50100];
int New_state(int _len){
len[Nodecnt]=_len;
return Nodecnt++;
}
int getfail(int p,int n,int which){
while(s[which][n-len[p]-1]!=s[which][n])
p=fail[p];
return p;
}
void add_len(int n,int which){
int cur=getfail(last,n,which);
if(!trans[cur][s[which][n]]){
int t=New_state(len[cur]+2);
fail[t]=trans[getfail(fail[cur],n,which)][s[which][n]];
trans[cur][s[which][n]]=t;
}
cnt[trans[cur][s[which][n]]][which]++;
last=trans[cur][s[which][n]];
}
int main(){
s[0][0]=-1;
s[1][0]=-1;
New_state(0);
New_state(-1);
fail[0]=1;
last=0;
scanf("%s",S+1);
n=strlen(S+1);
for(int i=1;i<=n;i++){
S[i]-='A';
s[0][i]=S[i];
add_len(i,0);
}
last=0;
scanf("%s",S+1);
n=strlen(S+1);
for(int i=1;i<=n;i++){
S[i]-='A';
s[1][i]=S[i];
add_len(i,1);
}
for(int i=Nodecnt-1;i>=0;i--)
cnt[fail[i]][0]+=cnt[i][0],cnt[fail[i]][1]+=cnt[i][1];
for(int i=2;i<Nodecnt;i++)
ans=(1LL*ans+1LL*cnt[i][0]*cnt[i][1]);
printf("%lld\n",ans);
return 0;
}

BZOJ 4480 [JSOI2013] 快乐的jyy的更多相关文章

  1. Bzoj4480: [Jsoi2013]快乐的jyy 广义后缀自动机 倍增 哈希 manacher

    国际惯例的题面:有人说这是回文自动机的板子题,然而我是不会这种东西的.于是,我选择用更一般性的方法去解决这个题,就是那一堆东西了.首先,我们把两个串同时插入一个广义SAM里,拓扑排序维护每个节点的pa ...

  2. bzoj4480: [Jsoi2013]快乐的jyy

    [问题描述] 给定两个字符串A和B,表示JYY的两个朋友的名字.我们用A(i,j)表示A 字符串中从第i个字母到第j个字母所组成的子串.同样的,我们也可以定义B(x,y). JYY发现两个朋友关系的紧 ...

  3. [Jsoi2013]快乐的jyy

    题目 这个需要我们瞎\(yy\)一下就能做了 我们先对于第一个串建立\(PAM\) 我们把第二个串丢上去匹配,这里匹配出来的是以每一个位置为结尾且在另一个串里存在的最长回文后缀的长度 对于每一个位置开 ...

  4. BZOJ 4479: [Jsoi2013]吃货jyy

    一句话题意:求必须包含某K条边的回路(回到1),使得总权值最小 转化为权值最小的联通的偶点 令F[i]表示联通状态为i的最小权值,(3^n状压)表示不在联通块内/奇点/偶点,连边时先不考虑必选的边的度 ...

  5. [JSOI2013] 快乐的 JYY - 回文自动机,DFS

    #include <bits/stdc++.h> #define Sigma 30 #define MAXN 500010 #define int long long using name ...

  6. 「JSOI2013」侦探jyy

    「JSOI2013」侦探jyy 传送门 个人感觉我写的复杂度不够优秀啊,但是好像没有别的办法了... 我们枚举每个点,考虑这个点能不能不发生. 首先我们从这个点开始,在反图上面 \(\text{BFS ...

  7. 【题解】bzoj 4478 [Jsoi2013]侦探jyy

    原题传送门 弱智搜索题 我们就枚举每个点,先判断它是否必须发生,如果没有必须发生,开始搜索它的祖先,如果祖先中有必须发生的,那么它就必须发生,如果祖先中没有必须发生的,那么搜索所有入度为0的点(除了它 ...

  8. bzoj 4459: [Jsoi2013]丢番图 -- 数学

    4459: [Jsoi2013]丢番图 Time Limit: 10 Sec  Memory Limit: 64 MB Description 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系 ...

  9. bzoj 4465: [Jsoi2013]游戏中的学问

    4465: [Jsoi2013]游戏中的学问 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 121  Solved: 59[Submit][Statu ...

随机推荐

  1. linux的基本操作(RPM包或者安装源码包)

    RPM包或者安装源码包 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下.所以你要 ...

  2. elk之elasticsearch(二)

    一.下载安装包:注意版本统一 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.zip wge ...

  3. 实战一个职业技术学校。 by:hack某某

    这是我们的目标,某一技术学院,这是一个注入点 上sqlmap 跑出了管理账号密码 扫后台 没有找到,注入就相当鸡肋了 换换其他思路 dba权限,想到了直接写入 找找路径之类的 找到了,运气相当的好 直 ...

  4. xcode工程编译错误之iOS解决CUICatalog: Invalid asset name supplied问题

    [问题分析]: 这个问题其实是老问题,产生原因就是因为在使用的时候 [UIImage imageNamed:]时,图片不存在或者传入的图片名为nil. [解决方法]: 添加一个系统断点,来判断如果图片 ...

  5. SQL Server (MSSQLSERVER) 服务由于下列服务特定错误而终止: %%17051

    问题出现:今天在给客户调试项目的时候,发现无法连接SQL server数据库 解决过程:1.在cmd命令窗口输入services.msc,打开服务窗口,找到SQL Server (MSSQLSERVE ...

  6. jQuery 学习笔记(5)(事件绑定与解绑、事件冒泡与事件默认行为、事件的自动触发、自定义事件、事件命名空间、事件委托、移入移出事件)

    1.事件绑定: .eventName(fn) //编码效率略高,但部分事件jQuery没有实现 .on(eventName, fn) //编码效率略低,所有事件均可以添加 注意点:可以同时添加多个相同 ...

  7. JDBC连接MySQL与Oracle

    JDBC连接MySQL .JDBC连接Oracle (跳转) JDBC连接MySQL import org.junit.Test; import java.sql.*; /** * JDBC连接MyS ...

  8. 大牛推荐的30本经典编程书籍,从Python到前端全系列。

    注:为了方便阅读与收藏,我们也制作了30本书籍完整清单的Markdown.PDF版以及思维导图版,大家可以在实验楼公众号后台回复关键字"书籍推荐"获取. Python 系列(10本 ...

  9. 10个有趣的Python教程,附视频讲解+练手项目。

    从前的日色变得慢,车.马.邮件都慢 一生只够爱一门编程语言 从前的教程也好看,画面精美有样子 你看了,立马就懂了 Python最性感的地方,就在于它的趣味性和前沿性,学习Python,你总能像科技节的 ...

  10. Java文件写入与读取实例求最大子数组

    出现bug的点:输入数组无限大: 输入的整数,量大: 解决方案:向文件中输入随机数组,大小范围与量都可以控制. 源代码: import java.io.BufferedReader; import j ...