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

#include <bits/stdc++.h>
#define Sigma 30
#define MAXN 500010
#define int long long
using namespace std ;
int n, m, ans ; char s[MAXN], t[MAXN] ;
struct PAM{
    int rt0, rt1, last, sz, f[MAXN], ch[MAXN][Sigma], fail[MAXN], len[MAXN] ;
    void Init(){
        sz = -1, rt0 = ++ sz, rt1 = ++ sz ;
        fail[rt0] = fail[rt1] = rt1, len[rt0] = 0, len[rt1] = -1, last = rt0 ;
    }
    PAM(){Init();}
    void Insert(int x, int p, char *s){
        int u = last ;
        while (s[p] != s[p - len[u] - 1]) u = fail[u] ;
        if (!ch[u][x]){
            int newq = ++ sz, fa = fail[u] ;
            while (s[p] != s[p - len[fa] - 1]) fa = fail[fa] ;
            fail[newq] = ch[fa][x], ch[u][x] = newq, len[newq] = len[u] + 2 ;
        }
        last = ch[u][x], f[last] ++ ;
    }
    void Solve() {
        for(int i=sz;i;--i) f[fail[i]] += f[i];
    }
}p,q;
void dfs(int x,int y) {
    if(x+y>2) ans += p.f[x]*q.f[y];
    for(int i=1;i<=26;i++)
        if(p.ch[x][i] && q.ch[y][i]) dfs(p.ch[x][i],q.ch[y][i]);
}
signed main() {
    ios::sync_with_stdio(false);
    cin>>s+1>>t+1;
    n=strlen(s+1);
    m=strlen(t+1);
    for(int i=1;i<=n;i++) p.Insert(s[i]-'A'+1,i,s);
    for(int i=1;i<=m;i++) q.Insert(t[i]-'A'+1,i,t);
    p.Solve(); q.Solve();
    dfs(1,1);dfs(0,0);
    cout<<ans<<endl;
}
												
											[JSOI2013] 快乐的 JYY - 回文自动机,DFS的更多相关文章
- Bzoj4480: [Jsoi2013]快乐的jyy 广义后缀自动机 倍增 哈希 manacher
		
国际惯例的题面:有人说这是回文自动机的板子题,然而我是不会这种东西的.于是,我选择用更一般性的方法去解决这个题,就是那一堆东西了.首先,我们把两个串同时插入一个广义SAM里,拓扑排序维护每个节点的pa ...
 - 回文自动机 + DFS --- The 2014 ACM-ICPC Asia Xi’an Regional Contest Problem G.The Problem to Slow Down You
		
The Problem to Slow Down You Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.actio ...
 - The Preliminary Contest for ICPC Asia Xuzhou 2019 G Colorful String(回文自动机+dfs)
		
这题建立一棵回文树,然后用dfs搜索答案,但是有一点需要注意,就是打vis的标记时,如果标记为1,那么在好几个节点都对同一个字符i打过标记,此时的搜索从字符i点回溯,回到它的父亲节点,搜索其它的字符, ...
 - [P5555] 秩序魔咒 - 回文自动机,DFS
		
#include <bits/stdc++.h> #define Sigma 30 #define MAXN 500010 #define int long long using name ...
 - 后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做
		
题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. #include <cstdlib> #in ...
 - [模板] 回文树/回文自动机 && BZOJ3676:[Apio2014]回文串
		
回文树/回文自动机 放链接: 回文树或者回文自动机,及相关例题 - F.W.Nietzsche - 博客园 状态数的线性证明 并没有看懂上面的证明,所以自己脑补了一个... 引理: 每一个回文串都是字 ...
 - BZOJ2342[Shoi2011]双倍回文——回文自动机
		
题目描述 输入 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. 输出 输出文件只有一行,即:输入数据中字符串的最长双倍回文子串的长度,如果双倍回文 ...
 - 字符串数据结构模板/题单(后缀数组,后缀自动机,LCP,后缀平衡树,回文自动机)
		
模板 后缀数组 #include<bits/stdc++.h> #define R register int using namespace std; const int N=1e6+9; ...
 - bzoj千题计划306:bzoj2342: [Shoi2011]双倍回文 (回文自动机)
		
https://www.lydsy.com/JudgeOnline/problem.php?id=2342 解法一: 对原串构建回文自动机 抽离fail树,从根开始dfs 设len[x]表示节点x表示 ...
 
随机推荐
- openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)
			
内容概览 1.openlayers6结合geoserver利用WFS服务实现图层新增功能2.源代码demo下载 效果图如下: 本篇主要是openlayers6通过调用geoserver发布的地图服务W ...
 - MR25H40非易失性串行接口MRAM
			
Everspin 是设计,制造和商业销售离散和嵌入式磁阻RAM(MRAM)和自旋传递扭矩MRAM(STT-MRAM)的全球领导者,其市场和应用领域涉及数据持久性和完整性,低延迟和安全性至关重要.Eve ...
 - Python中的用open打开文件错误,FileNotFoundError: [Errno 2] No such file or directory:
			
学习python的文件处理,刚开始打开文件,代码如下 f = open('test_file.txt', 'r', encoding='UTF-8')RES = f.readlines()print( ...
 - 树莓派点亮LED灯需要几行代码?3行。小孩子都能学会
			
目录 点亮LED灯 硬件连接 代码 闪烁的LED灯 呼吸灯 其他 点亮LED灯 硬件连接 找一个LED灯,连接如上图,注意长短引脚,经过这些年的狂轰乱炸,大家对于这个应该不漠视,毕竟Arduino都进 ...
 - opencv —— resize、pyrUp 和 pyrDown 图像金字塔(高斯金字塔、拉普拉斯金字塔)与尺寸缩放(向上采样、向下采样)
			
我们经常会将某种尺寸的图像转化为其他尺寸的图像,如果需要放大或者缩小图像的尺寸,在 OpenCV 中可以使用如下两种方法: resize 函数,最直接的方法. pyrUp 和 pyrDown 函数,即 ...
 - 【python基础语法】多重循环嵌套,函数(第6天课堂笔记)
			
1.什么是函数?函数有什么作用? 函数都是有特定功能的,都是由一些有特定功能的进行封装完成的 2.已经学过了哪些内置函数?分别有什么作用? print:输出 input:输入 type:查询数据类型 ...
 - 基于axios的万能封装
			
一 . 命名axios.js import axios from 'axios'; export default function ajax(url = '', params = {}, type = ...
 - 使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)
			
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 阅读导航 本文背景 ...
 - 根据词频生成词云(Python wordcloud实现)
			
网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...
 - jQuery---jquery.color.js和jquery.lazyload.js的使用
			
jquery.color.js的使用 了解即可 <!--1. 引入jquery的js文件--> <script src="jquery-1.12.4.js"> ...