[JSOI2013]快乐的 JYY

题目链接:https://www.luogu.com.cn/problem/P5685

题解:

回文自动机。对两个字符串分别构造回文自动机。统计每个回文子串出现的次数。
DFS。对两个自动机DFS,对于两个自动机共有的回文子串,ans+=两个自动机该串出现次数的乘积。

#include<stdio.h>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
#include<iterator>
#define dbg(x) cout<<#x<<" = "<<x<<endl;
#define INF 0x3f3f3f3f
#define eps 1e-6using namespace std;
typedef long long LL;
typedef pair<int, int> P;
const int maxn = 50010;
const int mod = 1000000007;
struct Pam{char s[maxn];int cnt, slen, last;int len[maxn], tim[maxn], num[maxn], fail[maxn], nex[maxn][26];void init(){cnt = -1;slen = last = 0;s[0] = '*';creat(0);creat(-1);fail[0] = 1;} int creat(int x){cnt++;len[cnt] = x;memset(nex[cnt], 0, sizeof(nex[cnt]));num[cnt] = tim[cnt] = 0;return cnt;}int getfail(int x){while(s[slen-len[x]-1] != s[slen])x = fail[x];return x;}void Insert(char ch){s[++slen] = ch;int x = ch-'A', cur = getfail(last);if(!nex[cur][x]){int now = creat(len[cur]+2);fail[now] = nex[getfail(fail[cur])][x];nex[cur][x] = now;}last = nex[cur][x];tim[last]++;}void getsum(){for(int i=cnt;i>1;i--)tim[fail[i]] += tim[i];}
}st1, st2;
int mx, num;
LL ans;
char str1[maxn], str2[maxn];
void dfs(int id1, int id2);int main()
{int n, m, i, j, k;scanf("%s %s", str1, str2);st1.init();for(i=0;str1[i];i++)st1.Insert(str1[i]);st1.getsum();st2.init();for(i=0;str2[i];i++)st2.Insert(str2[i]);st2.getsum();dfs(0, 0);dfs(1, 1);printf("%lld\n", ans);return 0;
}void dfs(int id1, int id2)
{if(id1!=0 && id1 != 1)ans += 1LL*st1.tim[id1]*st2.tim[id2];for(int i=0;i<26;i++)if(st1.nex[id1][i] && st2.nex[id2][i])dfs(st1.nex[id1][i], st2.nex[id2][i]);
}

洛谷_5685 [JSOI2013]快乐的 JYY(回文自动机)相关推荐

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

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

  2. BZOJ 4480: [Jsoi2013]快乐的jyy(回文自动机)

    Description [故事背景] JYY在JSOI有很多很多的好朋友,比如PUPPY,KFC还有PUPPUP.因为 有了这么多的好朋友,所以JYY每天都很快乐.某天,JYY发现好朋友之间关 系的好 ...

  3. 4480: [Jsoi2013]快乐的jyy

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

  4. BZOJ4480:快乐的jyy(回文自动机)

    题面 题意:给出两个串,问所有回文串在两个串出现次数之积之和. 应该是回文自动机果题 插完一个串后重置last,再插入另一个串 每个状态对于两个串分别统计Right集的大小 就可以统计答案了 #inc ...

  5. BZOJ 4480 [JSOI2013] 快乐的jyy

    思路 两个字符串都插入回文自动机中(每次重置last) 最后统计两个right集合的大小就好了 代码 #include <cstdio> #include <algorithm> ...

  6. bzoj 4480: [Jsoi2013]快乐的jyy

    题意: 给两个串,求两个相同的回文串,在两个串中出现过,位置不同算不同.求方案数. 题解: 回文自动机裸题,当然bzoj3676更裸,记得有一篇博客写的很好,关于回文自动机的,但是忘了是哪篇,好像从h ...

  7. [JSOI2013]快乐的 JYY

    一.题目 点此看题 二.解法 回文自动机板题,我们先建出两个回文自动机,把每一次的LastLastLast打上标记,然后再对failfailfail树内的标记求和,算出来就是这个点的回文串出现次数.然 ...

  8. 洛谷试炼日记(trie树,AC自动机,回文自动机)(解题报告)

    文章目录 **Trie树** P4683 [IOI2008] Type Printer 打印机 **AC自动机** P2444 [POI2000]病毒 **回文自动机** P5496 [模板]回文自动 ...

  9. 【知识总结】回文自动机(Palindrome_Automaton)

    参考资料:Palindromic Tree--回文树[处理一类回文串问题的强力工具](请注意,其中似乎有一些错误) 回文自动机似乎和回文树是同一个东西qwq? 回文自动机(PAM)是一种处理回文串的工 ...

  10. 【回文自动机】bzoj3676 [Apio2014]回文串

    回文自动机讲解!http://blog.csdn.net/u013368721/article/details/42100363 pam上每个点代表本质不同的回文子串.len(i)代表长度,cnt(i ...

最新文章

  1. html实现动态多表单输入,提交多个动态添加的html表单
  2. 做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个DNN模型...
  3. 【错误记录】创建密钥报错 ( Key was created with errors: Warning: JKS 密钥库使用专用格式。建议使用 “ keyto “ 迁移到行业标准格式 PKCS12 )
  4. 应该增加黑样本还是白样本呢
  5. Matlab 工具箱
  6. python中的运算符_Python 中的神秘运算符
  7. [算法]不使用*、/、+、-、%操作符求一个数的1/3
  8. exit和abort都是用来终止程序的函数
  9. 扩展空间_实用!Win10开启SMB共享的方法,给GPD MicroPc扩展更多存储空间
  10. 论文笔记:Deep neural networks for YouTube recommendations
  11. Cisco Router WEB管理
  12. 专业wifi测试软件,专业的WiFi检测工具有哪些?
  13. python商业爬虫教程_python商业爬虫课程
  14. 产品读书《文案训练手册》
  15. 用Arduino做一个能发射水弹的遥控小车
  16. 十六、Swift 可选值链条 Optional Chaining
  17. 今晚开启公募的雪崩协议,带协议层先进入3.0
  18. 【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】
  19. 班级计算机应用论坛研讨,以“心”育人,处处花开——我校教师参加第四届中小学班主任高峰论坛暨班级管理策略专题研讨会...
  20. .Net Core DI依赖注入:一个接口注入多个实现类

热门文章

  1. 如何将敏捷开发与V模型深度融合?这家企业给出答案
  2. 软件开发线上运营计划
  3. React实战——从零搭建一款轻量级个人OA系统
  4. wap站、手机APP 接入支付宝、微信、银联支付。
  5. 5.15 相约上海!2021 年度首届云原生 Meetup | KubeSphere Friends
  6. php.ini development,php.ini-production 与 php.ini-development 的差别
  7. Blender图解教程:如何绑定可以切换吸附位置的物体(比如:武器)
  8. 集成华为游戏服务SDK,安装失败存在同名的数据库
  9. 新手唱歌从入门到精通,经典唱歌教程系列合集
  10. Java学习--动态代理