题目描述 $ASDFZ$的机房中不仅有红太阳,还有蓝太阳和原谅色太阳.有一天,太阳们来到机房,发现桌上有不知道哪个蒟蒻放上的问题:令$F(A,B)$表示选择一个串$A$的非空前缀$S$和串$B$的非空后缀$T$使得将串$S$和串$T$拼起来之后是回文串的方案数.现在给定两个串$A$和$B$,令$A_i$表示串$A$的第$i$长的后缀,$B_i$为串$B$的第$i$长的前缀.有$Q$组询问,第$i$组询问给定$x_i$和$y_i$,对每组询问求$F(A_{x_i},B_{y_i})$的值.太阳们非…
题目描述 闲着无聊的$YGH$秒掉上面两道题之后,开始思考有趣的回文串问题了. 他面前就有一个漂浮着的字符串.显然$YGH$是会$manacher$的,于是他随手求出了这个字符串的回文子串个数.但是他不满足于这个问题,他打算搞出一个数据结构,能够快速求出这个字符串下标为$[l,r]$的子串的回文子串个数(相同的回文子串需重复计数).但是这实在是太简单啦,他打算考考辣鸡$YYR$,可是辣鸡至极的$YYR$完全没有思路. 于是,$YGH$扬长而去,在衣袖带起的一小片尘土之中,沉思的$YYR$依旧在那…
显然答案应该是由单串以某位置为中心的极长回文串继续在另一个串里拓展得到的.枚举中间位置二分答案,哈希判断即可.注意考虑清楚怎么处理偶回文,比如像manacher一样加分隔符. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #d…
[BZOJ4755]扭动的回文串(Manacher,哈希) 题面 BZOJ 题解 不要真的以为看见了回文串就是\(PAM,Manacher\)一类就可以过. 这题显然不行啊. 我们主要考虑如何解决跨串拼接的回文串. 我们直接枚举回文中心, 即使要跨串,在最优情况下,也一定包含了这个回文中心的最长回文串 那么二分+哈希即可. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring&…
考虑每个回文串,它一定是它中心字母的最长回文串两侧去掉同样数量的字符后的一个子串. 所以我们可以用manachar求出每一位的回文半径,放到哈希表里并标记出它的下一个子串. 最后拓扑排序递推就行了... 这道题丧心病狂卡哈希....wa了一屏... #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include&l…
题意:给你一个n*n (n<=200)的字符串矩阵,问你每行每列都是回文串的最大的m*m的矩阵是多少 题解:首先答案不满足单调性,即m成立而m-1与m+1都却不一定成立,所以必须枚举答案确定现在的值是否成立,从大到小枚举就好 当枚举值为k时就转换为判断k是否为所求矩阵,判断时我们需要枚举每个点,(看从这个点开始是否向右向下都有连续k个回文串) 而我们可以分别找向右和向下,标记这个点向右或向下是否满足(从这个点开始是否向右向下都有连续k个回文串) 我们找向下时枚举每列每个向右k个字符是否为回文串…
[GDOI2016模拟3.15]基因合成 题意: 给一个目标串,要求从空串进行最少的操作次数变成目标串,操作有两种: 在串的头或尾加入一个字符. 把串复制一遍后反向接到串的末尾. 因为有回文操作,所以可以想到一些与回文有关的东西. 如Manacher,回文树-- 这里采用强大的回文树. 首先注意到目标串可以看作是由一个长度为偶数的回文串在首尾加上若干字符得到的一个串. 所以我们可以求出原串中所有的偶回文串,然后再加加减减一下. 但为什么长度为奇数的不用讨论呢? 这是因为长度为奇数的回文串不可能通…
等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 1919  Solved: 713[Submit][Status][Discuss] Description 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N (Len>=3), 使得Ap1,Ap2,Ap3,…ApLen是一个等差序列.   Input 输入的第一行包含一个整数T,表示组数. 下接T组数…
题意:给定字符串char[],以及Q个操作,操作有三种: 1:pos,chr:把pos位置的字符改为chr 2:pos:问以pos为中心的回文串长度为多长. 3:pos:问以pos,pos+1为中心的回文串长度为多长. 思路:用hash表示一段字符串或者连续子串.我们用BIT记录hash前缀和,那么也可以用BIT修改前缀和.然后blabla,乱搞就行了. 当然为了保险,最好用双hash. (此题暴力也可以过! 暴力代码:3962ms #include<bits/stdc++.h> #defin…
概念 用hash求最长回文串/回文串数 首先,易知,回文串具有单调性. 如果字符串 $s[l...r]$ 为回文串串,那么 $s[x...y]$($l < x, y < r$ 且 $|l-x| = |r-y|$)也一定是回文串. 因此,可以二分. 通常,枚举一下起点或者中点,然后二分长度. 这样复杂度为 $O(nlogn)$,逊色于马拉车 $O(n)$,但在时限不那么紧的情况下,hash也是不错的选择. 例题 题意:对于一个 0/1 串,如果将这个字符串 0 和 1 取反后,再将整个串反过来和…