E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Shoi2011
[
SHOI2011
]双倍回文
传送门Luogu题解显然长度要是4的倍数,然后要是一个回文串复制一遍。那么我们可不可以抠出每一个回文串然后统计呢?答案是可以的,问题在于你还需要记下字符串的本质。然后你就可以发现\(PAM\)可以用\(parent\)树完美避开这个问题,只需要判断长度是否为\(4\)的倍数且这个串的一半的长度出现过即可。代码实现#include#include#include#include#include#in
fexuile
·
2019-10-07 23:00
SHOI2011
双倍回文
双倍回文如果s能够写成wwRwwR的形式,则称s是双倍回文。s的长度是4的倍数,前后两半都是相同的回文。对于给定的字符串,计算它的最长双倍回文串的长度。Nusingnamespacestd;templateTread(){Tx=0,w=1;charc=getchar();for(;!isdigit(c);c=getchar())if(c=='-')w=-w;for(;isdigit(c);c=ge
autoint
·
2019-08-27 17:00
【洛谷4287】[
SHOI2011
] 双倍回文(Manacher算法经典题)
点此看题面大致题意:求一个字符串中有多少个长度为偶数的回文串,它的一半也是回文串。ManacherManacherManacher算法这应该是ManacherManacherManacher算法一道比较好的入门题,强烈建议在做这题之前先去学一学ManacherManacherManacher算法。LinkLinkLinkManacherManacherManacher算法详见博客Manacher算
chenxiaoran666
·
2018-10-20 13:52
洛谷
Manacher算法
[
SHOI2011
]双倍回文
DescriptionInput输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容。Output输出文件只有一行,即:输入数据中字符串的最长双倍回文子串的长度,如果双倍回文子串不存在,则输出0。SampleInput16ggabaabaabaaballSampleOutput12HINTN=x。这个不难理解,否则p[j]+j#include#incl
Wolfycz
·
2018-02-04 21:00
9.13第一轮扫荡战果
1.处理内容字符串部manacher1题后缀数组1题后缀自动机1题最小表示法1题数学几何部miller-rabin1题动态规划部斜率优化2题2.字符串部(1)双倍回文(
SHOI2011
)暴力瞎搞搞#include
Friedrich_Taylor
·
2017-09-13 20:11
OI
字符串算法纲
动态规划纲
5-6月题目汇总(5.30---6.4)
5.30晚NO.1来源:BZOJ2342[
Shoi2011
]双倍回文分类:回文,Manachar简要题解:先用Manachar求出f(i),令p(i)表示以i,i+1中间为对称轴能延伸的最长长度,也就是
Nocownowa
·
2017-05-30 21:13
思维趣题
bzoj2342【
SHOI2011
】双倍回文
2342:[
Shoi2011
]双倍回文TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 1798 Solved: 670[Submit][Status][Discuss
AaronGZK
·
2016-05-25 00:00
字符串
set
Manacher
BZOJ 2342: [
Shoi2011
]双倍回文 (Manacher+set)
题意如果一个回文串的前一半和后一半也是回文串,那就是一个双倍回文,求最长的双倍回文的长度。思路先manacher预处理出来所有p[i]是必须要的。然后我选择了枚举所有p[i],也就是枚举出双倍回文的大串的中点,然后判断前半部分的中点的p[j]是不是等于二分之一的p[i],然后WA了。因为p[i]代表的是i这个点的最长回文半径像这组数据:ccddddcc就是不能通过的。然后窝们就要好好yy一下了。。
Dreamon3
·
2016-05-02 21:00
【BZOJ2342】【
Shoi2011
】双倍回文 Manacher算法
其实这道题就是马拉车(?)的数组做出来之后再来一点小小的处理。为了偷懒在s[0]处插入'$',然后用‘#’把字符串夹在中间,首先将d数组处理出来,然后枚举每个s[i]=='#'的位置(因为长度是偶数所以对称中心一定是‘#’),暴力寻找最大的j,满足d[i+j]>=j&&d[i-j]>=j(j%2==0),原理比较浅显,因为i+j.i-j就是两个小字串的对称中心。 最终答案就是maxj*2#incl
qq_34637390
·
2016-04-20 23:00
字符串
manacher算法
BZOJ 2342: [
Shoi2011
]双倍回文 马拉车算法/并查集
2342: [
Shoi2011
]双倍回文 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1123 Solved
·
2015-10-30 13:17
并查集
BZOJ 2342([
Shoi2011
]双倍回文-manacher+set)
N usingnamespacestd; #defineFor(i,n)for(inti=1;i=k;i--) #defineRepD(i,n)for(inti=n;i>=0;i--) #defineForp(x)for(intp=Pre[x];p;p=Next[p]) #defineForpiter(x)for(int&p=iter[x];p;p=Next[p]) #defineLson(o=i
nike0good
·
2015-10-13 14:00
BZOJ 2342 [
Shoi2011
] 双倍回文 Manacher + set维护
题目大意:就是现在给出一个长度为n的字符串(1 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespace
u013738743
·
2015-03-24 10:00
Manacher
bzoj
2342
Shoi2011
双倍回文
【BZOJ2342】【
Shoi2011
】双倍回文 Manacher+枚举+最优性剪枝
题解:Manacher处理出回文半径,然后知道一个回文串后就可以知道两边的回文中心,然后O(1)check是否合法,即判断两边中心的回文半径。这里需要枚举每一个位置的回文半径,因为比如这个 18abbbaabbbaccddddccccddddcc就不是双倍回文,但是它中间有个dddd是双倍回文,如果每个回文只check最长的是不是双倍回文,就会WA在这里。Manacher算法:http://blo
Vmurder
·
2014-12-28 11:00
Manacher
BZOJ2342
Shoi2011
双倍回文
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他