其实每个串都不是回文串也能做的说。。。

题意:给定 \(n\) 个互不相同的串,两两拼接一共能够拼出 \(n^2\) 个串,问这 \(n^2\) 个串中有几个回文串。

首先假设拼接出来的串是 \(AB\),且 \(A\) 的长度大于 \(B\) 的长度。

\(AB\) 是回文串,那么回文中心一定在 \(A\) 上,那么就说明 \(B\) 的反串一定是 \(A\) 的前缀。将 \(A\) 去掉这个前缀后,剩下的后缀一定也是回文串。

然后问题就变成了了询问有多少个串是一个串的前缀,以及一个串的后缀是否是回文串。前者用 Trie,后者用 Hash 就好了。

每个串都是回文串只是方便了处理而已,处理后缀是否为回文串相当于处理前缀是否为回文串。

不懂为什么是紫题。。。

#include<algorithm>
#include<cstdio>
typedef unsigned ui;
const ui M=2e6+5,mod=998244353;
ui n,m,mx,tot(1),p[M],len[M],cnt[M],chi[M][26];char s[M],*S[M];bool Vis[M],*vis[M];long long ans;
inline void Insert(char*s,const ui&len){
ui i,now(1);
for(i=0;i^len;++i)!chi[now][s[i]-97]&&(chi[now][s[i]-97]=++tot),now=chi[now][s[i]-97];++cnt[now];
}
inline void Match(char*s,const ui&id,const ui&len){
ui i,now(1);
for(i=0;i^len;++i)cnt[now]&&vis[id][len-i-1]&&(ans+=cnt[now]),now=chi[now][s[i]-97];
}
signed main(){
ui i,j,h1,h2;scanf("%u",&m);S[1]=s;vis[1]=Vis;p[0]=1;
for(i=1;i<=m;++i)scanf("%u%s",len+i,S[i]),S[i+1]=S[i]+len[i],Insert(S[i],len[i]),len[i]>mx&&(mx=len[i]);
for(i=1;i^mx;++i)p[i]=13331ull*p[i-1]%mod;
for(j=1;j<=m;++j){
vis[j+1]=vis[j]+len[j];h1=h2=0;
for(i=0;i^len[j];++i)h1=(1ull*p[1]*h1+(S[j][i]-97))%mod,h2=(h2+1ull*p[i]*(S[j][i]-97))%mod,vis[j][i]=h1==h2;
}
for(i=1;i<=m;++i)Match(S[i],i,len[i]);printf("%lld",(ans<<1)+m);
}

LGP3449题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 使用@WebServlet等注解需要i注意的

    Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的.如果设置 ...

  2. spring filter详解

    一.Filter基本工作原理 1.Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的. 2.当在 web.xml 注册了一个 ...

  3. C语言中的typedef跟define的区别

    今天用C语言练习时涉及到了typedef和define的使用问题,那么他们的区别是啥?这种情况下为什么要用typedef?哪种情况下为什么要用define呢? 学习C的时候的你是否考虑过这个问题呢? ...

  4. 问题描述 ens33 不见了

    事情是这样紫的 我今天用Xshell 连接Linux 发现连接不上去百思不得其解,然后就去Linux里看 ifconfig 的配置,然后发现 ens33居然不见了,就只有lo 和 virbr()  , ...

  5. HGAME-week2-web-wp

    hgame第二周总结 1.webpack-engine 我不懂,但是真的刚打开就出来了,一脸懵逼(wp说是sourcemap没关 hgame{D0nt_f0r9et_2_ClOs3_S0urce_m@ ...

  6. Solution -「CF 555E」Case of Computer Network

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个点 \(m\) 条边的无向图,判断是否有给每条边定向的方案,使得 \(q\) 组有序点对 \((s,t)\) ...

  7. python中面向对象VS面向过程

    面向过程编程:首先分析出解决问题所需要的步骤(即"第一步做什么,第二步做什么,第三步做什么"),然后用函数实现各个步骤,再依次调用. 面向对象编程:会将程序看作是一组对象的集合,用 ...

  8. C#控制树莓派入门

    何为树莓派 许久没有写博客了,十二月份西安疫情的影响,居家隔离了一个多月,在其期间,学习了一下树莓派,觉得硬件还是挺有意思的,刚好也看到了巨硬有提供使用c#用来开发树莓派应用的解决方案叫Net Iot ...

  9. Vue 源码解读(8)—— 编译器 之 解析(上)

    特殊说明 由于文章篇幅限制,所以将 Vue 源码解读(8)-- 编译器 之 解析 拆成了上下两篇,所以在阅读本篇文章时请同时打开 Vue 源码解读(8)-- 编译器 之 解析(下)一起阅读. 前言 V ...

  10. 打破刻板印象,了解真正的商业智能BI

    ​在技术飞速发展的过程中,人们越来越怀疑传统的数据分析方法.可以通过对商业智能的各种误解来解释这一点,如今,这种误解正在作为有效的真理传播.例如,数据仓库已达到其目标.而数据质量似乎也正在失去其相关性 ...