http://blog.csdn.net/u013368721/article/details/42100363  回文树

建立两棵回文树,然后count处理一遍就可以了,然后顺着这两棵树的边走下去就好了

#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <cstdio>
using namespace std;
const int maxn=;
const int sign_size=;
struct Palind_Tree{
int next[maxn][sign_size];
int fail[maxn];
int cnt[maxn];
int num[maxn];
int len[maxn];
int S[maxn];
int last;
int n;
int p;
int newnode(int l)
{
for(int i=; i<sign_size; i++)next[p][i]=;
cnt[p]=;
num[p]=;
len[p]=l;
return p++;
}
void init()
{
p=;
newnode();
newnode(-);
last=;
n=;
S[n]=-;
fail[]=;
}
int get_fail(int x)
{
while(S[n-len[x]-]!=S[n])x=fail[x];
return x;
}
void add(int c)
{
c-='a';
S[++n]=c;
int cur=get_fail(last);
if(next[cur][c]==)
{
int now=newnode(len[cur]+);
fail[now]=next[get_fail( fail[cur] )][c];
next[cur][c]=now;
num[now]=num[fail[now]]+;
}
last=next[cur][c];
cnt[last]++;
}
void count()
{
for(int i=p-; i>=; --i)cnt[fail[i]]+=cnt[i];
}
}T1,T2;
char S[maxn],S2[maxn];
long long ans=;
void dfs(int u,int v)
{
for(int i=; i<sign_size; i++)
{
int x=T1.next[u][i],y=T2.next[v][i];
if(x&&y)
{
ans+=(long long)T1.cnt[x]*T2.cnt[y];
dfs(x,y);
}
}
}
int main()
{
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; cc++)
{
scanf("%s%s",S,S2); T1.init();
T2.init();
int len1=strlen(S);
int len2=strlen(S2);
for(int i=; i<len1; i++)
T1.add(S[i]);
for(int i=; i<len2; i++)
T2.add(S2[i]);
T1.count();
T2.count();
ans=;
dfs(,);
dfs(,);
printf("Case #%d: %I64d\n",cc,ans);
}
return ;
}

2014-2015 ACM-ICPC, Asia Xian Regional Contest GThe Problem to Slow Down You的更多相关文章

  1. hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...

  2. (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memo ...

  3. (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)

    http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others)  ...

  4. 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  5. 2014-2015 ACM-ICPC, Asia Xian Regional Contest(部分题解)

    摘要 本文主要给出了2014-2015 ACM-ICPC, Asia Xian Regional Contest的部分题解,说明了每题的题意.解题思路和代码实现,意即熟悉区域赛比赛题型. Built ...

  6. ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków

    ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...

  7. 2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred)

    2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred) easy: ACE ...

  8. 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树

    The Problem to Slow Down You Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjud ...

  9. HDU 5458 Stability(双连通分量+LCA+并查集+树状数组)(2015 ACM/ICPC Asia Regional Shenyang Online)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 Problem Description Given an undirected connecte ...

随机推荐

  1. Android Studio Gradle Build Running 加速

    加速效果

  2. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  3. mysql与mycat搭建实现集群与读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  4. mysql使用druid监控配置

    近一年公司对druid使用频率越来越高了,感觉有必要了解下druid的监控配置,参考文档:https://blog.csdn.net/netdevgirl/article/details/526098 ...

  5. [Vue warn]: Attribute "id" is ignored on component <div> because the component is a fragment instanc

    今天在使用vue框架搭建环境时,遇到这个错误提示: [Vue warn]: Attribute "id" is ignored on component <div> b ...

  6. go异常处理原则

    如果你定义的函数有可能失败,它就应该返回一个错误.当我调用其他package的函数时,如果这个函数实现的很好,我不需要担心它会panic,除非有真正的异常情况发生,即使那样也不应该是我去处理它.而pa ...

  7. c++ 模板相关

    https://blog.csdn.net/lezardfu/article/details/60466161 https://www.cnblogs.com/ymy124/p/3632634.htm ...

  8. Cookiecutter: 更好的项目模板工具:(2)安装及基础使用

    安装 通过python包管理工具 命令行输入 $pip install cookiecutter 或者 # mac os经常会禁止用户全局安装python包 $pip install --user c ...

  9. C# 递归省市区三级树结构

    省市区结构 实体 /// <summary> /// 行政区 /// </summary> public class AreaEntity { public int Id { ...

  10. 三种不同类型的ssh隧道

    何谓SSH隧道 隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术.这里我们研究ssh隧道,所以所有的网络通讯都是加密的.又被称作端口转发,因为ssh隧道通常会绑定一个本地端口,所有发向这个 ...