当前位置: 首页 > news >正文

最长双回文串

 最长双回文串

题目描述

顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。
输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。

 

 

对于$10%$的数据, $ 2≤|S|≤10^3 $。
对于$30%$的数据,$ 2≤|S|≤10^4 $。
对于$100%$的数据,$ 2≤|S|≤10^5 $。

Solution
先manache求出每个位置为中心的最长回文串,把中心的位置打在左端点上。
从左到右取一边Max,求出每一个位置x覆盖它的最右位置p[x]。
接着访问每一个中心x,取他的右端点xr,则ans= max(ans,p[xr]-x);相当于拼起来
 
我的做法是非正解。。没过的同学可以看看别人的。
我们oj数据弱可以过,洛谷过不了。
有没有神犇看看为啥错?或者出数据卡卡。
博主不胜感激。
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cmath>
 7 #define maxn 1000000
 8 using namespace std;
 9 int n,p[maxn],Max[maxn];
10 char ch[maxn],s[maxn]; 
11 int main()
12 {
13     scanf(" %s",ch+1);n=strlen(ch+1);
14     for(int i=1;i<=n;i++){
15         s[i+i]=ch[i];s[i+i+1]='%';
16     }
17     int mr=0,id=0;s[0]='%';s[1]='%';s[n+n+2]='\n';n=n+n+1;
18     for(int i=1;i<=n;i++){
19         p[i]=mr>i?min(p[2*id-i],mr-i):1;
20         while(s[i+p[i]]==s[i-p[i]])p[i]++;
21         if(i+p[i]>mr){
22             mr=i+p[i];
23             id=i;
24             
25         }
26         Max[i-p[i]]=max(Max[i-p[i]],id);
27         //cout<<i<<' '<<p[i]<<endl;
28     }
29     for(int i=1;i<=n;i++)Max[i]=max(Max[i],Max[i-1]);
30     int ans=0;
31     for(int i=1;i<=n;i++){
32         ans=max(ans,Max[i+p[i]-1]-i);
33     }
34     cout<<ans<<endl;
35     return 0;
36 }
View Code

 

 

转载于:https://www.cnblogs.com/liankewei/p/10662946.html

相关文章:

  • 实现图片滑块滚动条效果
  • 关于GPRS 拨号上网配置
  • 141. 环形链表
  • 搞笑集合
  • 正式搬家到博客园
  • C# 和 c++的语法不同点
  • 我的新浪微博
  • 晴天霹雳。。傲盾把我的Linux格成了03系统了?之二
  • Log4j2入门
  • Notepad++插件安装和使用和打开大文件
  • 在SharePoint Server 2010中更改“我的网站”
  • 基数排序的理解和实现(Java)
  • P1962 斐波那契数列-题解(矩阵乘法扩展)
  • DotNetNuke模块开发(一)
  • LOJ104 普通平衡树
  • [译]Python中的类属性与实例属性的区别
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • echarts花样作死的坑
  • express如何解决request entity too large问题
  • HTTP那些事
  • JavaScript DOM 10 - 滚动
  • Java教程_软件开发基础
  • java取消线程实例
  • Kibana配置logstash,报表一体化
  • React Native移动开发实战-3-实现页面间的数据传递
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 看域名解析域名安全对SEO的影响
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 如何使用 JavaScript 解析 URL
  • 三栏布局总结
  • 跳前端坑前,先看看这个!!
  • 一些css基础学习笔记
  • 优秀架构师必须掌握的架构思维
  • 原生js练习题---第五课
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • MyCAT水平分库
  • 我们雇佣了一只大猴子...
  • ​configparser --- 配置文件解析器​
  • ​卜东波研究员:高观点下的少儿计算思维
  • ( 10 )MySQL中的外键
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1) caustics\
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)共用体union的用法举例
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET gRPC 和RESTful简单对比
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET Micro Framework初体验
  • .Net Remoting常用部署结构