[BZOJ]4755: [Jsoi2016]扭动的回文串
Time Limit: 10 Sec Memory Limit: 512 MB
Description
Input
Output
Sample Input
ABCDE
BAECB
Sample Output
最佳方案中的扭动回文串如下所示(不在回文串中的字符用.表示):
.BC..
..ECB
Solution
Code
#include<cstdio> #include<algorithm> using namespace std; #define MN 100000 #define X 31 #define MOD 998244353 char a[MN+5],b[MN+5],s[MN*2+5]; int n,p[MN+5],ha[MN+5],hb[MN+5],d[MN*2+5],ans; void solve(char*S) {int i,mx=0,L,R,l,r,mid,res;for(s[0]='.',i=1;i<2*n;++i)s[i]=i&1?S[i+1>>1]:'#';for(i=1;i<2*n;++i){d[i]=mx+d[mx]<i?0:min(d[2*mx-i],mx+d[mx]-i);while(s[i+d[i]+1]==s[i-d[i]-1])++d[i];if(i+d[i]>mx+d[mx])mx=i;L=i-d[i]+2>>1;R=i+d[i]+1>>1;if(S==a)--R;else ++L;for(l=0,r=min(L-1,n-R);l<=r;){mid=l+r>>1;if((1LL*(ha[L-1]-1LL*ha[L-mid-1]*p[mid])%MOD+MOD)%MOD==(1LL*(hb[R+1]-1LL*hb[R+mid+1]*p[mid])%MOD+MOD)%MOD)res=mid,l=mid+1;else r=mid-1;}ans=max(ans,R-L+2+res*2);} } int main() {int i,mx;scanf("%d%s%s",&n,a+1,b+1);for(p[0]=i=1;i<=n;++i)p[i]=1LL*p[i-1]*X%MOD;for(i=1;i<=n;++i)ha[i]=(1LL*ha[i-1]*X+a[i])%MOD;for(i=n;i;--i)hb[i]=(1LL*hb[i+1]*X+b[i])%MOD;solve(a);solve(b);printf("%d",ans); }
转载于:https://www.cnblogs.com/ditoly/p/BZOJ4755.html
[BZOJ]4755: [Jsoi2016]扭动的回文串相关推荐
- bzoj 4755: [Jsoi2016]扭动的回文串 manachar+hash+二分
题意 JYY有两个长度均为N的字符串A和B. 一个"扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的子串与B中的第j个字符到第k个字符组成的子串拼接而成. 比如,若A='XYZ ...
- bzoj4755: [Jsoi2016]扭动的回文串 manacher+二分+Hash
bzoj4755: [Jsoi2016]扭动的回文串 Description JYY有两个长度均为N的字符串A和B. 一个"扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的子串 ...
- 【BZOJ4755】 [Jsoi2016]扭动的回文串
BZOJ4755 [Jsoi2016]扭动的回文串 Solution 考虑对于他给出的 A中的一个回文串: B中的一个回文串: 或者某一个回文的扭动字符串S(i,j,k) 这样子几个限制,我们1,2就 ...
- BZOJ4755: [JSOI2016]扭动的回文串——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4755 JYY有两个长度均为N的字符串A和B. 一个"扭动字符串S(i,j,k)由A中的第 ...
- [JSOI2016]扭动的回文串
题目 非常板子了 看到求什么最长的回文,我们就想到枚举回文中心的方法 首先对于这个回文串只包含在一个串内的情况,我们随便一搞就可以了,大概\(Manacher\)一下就没有了 对于那种扭动的回文串,我 ...
- BZOJ4755 [Jsoi2016]扭动的回文串
标签:Manacher,hash,二分 题目 题目传送门 Description JYY有两个长度均为N的字符串A和B. 一个"扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的 ...
- 洛谷 P4324 [JSOI2016]扭动的回文串 manacher+字符串hash
题目描述 JYY有两个长度均为 NNN 的字符串 AAA 和 BBB. 一个扭动字符串 S(i,j,k)S(i,j,k)S(i,j,k) 由 AAA 中的第 iii 个字符到第 jjj 个字符组成的子 ...
- P4324 [JSOI2016]扭动的回文串
传送门 对\(A\).\(B\)串各跑一遍\(manacher\),求出第\(1\).\(2\)类扭动回文串的最大长度. 考虑第三类的扭动回文串\(S(i,j,k)\),一定可以表示为\(A(i,l) ...
- 【JSOI2016】扭动的回文串
内存限制:256 MiB 时间限制:1000 ms 题目描述 JYY 有两个长度均为 N 的字符串 A 和 B. 一个「扭动字符串」S(i,j,k)S(i,j,k)S(i,j,k) 由 A 中的第 i ...
最新文章
- 南华大学c语言多少分才能过_成人高考难吗?多少分可以过?
- 什么是词向量?word2vec、Glove、FastText分别是什么?
- 可以接受失败,但不选择放弃
- Spring进阶的几大要点,你有做到吗?
- 图形界面终端下打印内核调试信息
- WinCE中sources文件中targetlibs与sourcelibs的作用与区别
- java 继承的内存分配_图解Java继承内存分配
- 从实例入手学习Shiro与Web的整合
- [蓝桥杯]算法训练 The Red Button||codeforces 325E(哈密顿回路)
- c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?
- 微信小程序中如何使用setData修改数组或对象中的某一参数
- 中国移动计算机二面笔试题,中国移动笔试面试经验
- 手机CAD如何快速看图下载?
- Alfred插件之有道翻译配置过程
- 蓝桥杯 第39级台阶
- 袋鼠云研发手记 | 袋鼠云EasyManager的TypeScript重构纪要
- python 爬取壁纸网站并保存图片到本地
- PLSQL官网, 及个版本下载地址和下载方法
- STM32驱动MPU6050基于IIC协议
- CPU中的八个通用寄存器
热门文章
- MySQL数据库常用基本语句及管理
- python在国内外研究现状_国内外研究现状,水平和发展趋势-开题报告
- 【CodeForces 1255E1 --- Send Boxes to Alice [Easy Version]】
- DSP芯片CSL的使用
- 金纳米粒子修饰MIL-101骨架材料(AuNPs/MIL-101)/负载COF-TpPa-1(Au NPs/COF-TpPa-1)|齐岳试剂
- ring buffer 环形队列 C++实现
- A Fixed-Point Model for Pancreas Segmentation in Abdominal CT Scans
- ios共享账号公众号_家人公众号和共享相册
- 文本与文本处理(一)
- 南华大学的计算机专业学校排名,2019南华大学专业排名