hdu4513_吉哥系列故事——完美队形II
来源:互联网 发布:阿里云注册会员名 编辑:程序博客网 时间:2024/05/16 14:41
题目链接:点我
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define N 100009int t[N<<1],p[N<<1];int manacher(int n){ int i,id=0,mx=0,ans=0; for(i=1; i<=n; i++) { if(mx>i) p[i]=min(mx-i,p[2*id-i]); else p[i]=1; while(t[i+p[i]]==t[i-p[i]]&&t[i-p[i]]<=t[i-p[i]+2]) p[i]++;//就在这一处地方加了条件判断。 if(mx<i+p[i]) mx=i+p[i],id=i; ans=max(ans,p[i]); } return ans-1;}int main(){ int tt,n,i; cin>>tt; while(tt--) { cin>>n; t[0]=-1,t[1]=0; for(i=1; i<=n; i++) { scanf("%d",&t[2*i]); t[2*i+1]=0; } printf("%d\n",manacher(2*n+1)); }}
需要注意的是此题前半部分回文串是不降低排列,所以t[0]要比插入的元素(t[1],t[3],t[5],,,)要小
如果是 0,-1,51,-1,52,-1,51,-1那么就会出现t[0]也会匹配的现象,所以要让t[0]最小
写法2:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define N 100009int t[N];int main(){ int tt,n,i; cin>>tt; while(tt--) { cin>>n; t[0]=-1;//如果不写这句会默认t[0]=0,一直前后延伸下去 for(i=1; i<=n; i++) { scanf("%d",&t[i]); } int s,e,ans=0; for(i=1; i<=n; i++) { s=i,e=i; while(t[s]==t[e+1])e++; i=e; while(t[s-1]==t[e+1]&&t[s-1]<=t[s]) s--,e++; ans=max(ans,e-s+1); } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu4513_吉哥系列故事——完美队形II
- hdu4513 吉哥系列故事——完美队形II
- 吉哥系列故事——完美队形II
- hdu4513---吉哥系列故事——完美队形II
- hdu4513 吉哥系列故事——完美队形II
- hdu4513_吉哥系列故事――完美队形II_Manacher的数组用法
- hdu 4513 吉哥系列故事——完美队形II(拓展KMP算法)
- hdu 4513 吉哥系列故事——完美队形II(最长回文串)
- HDU 4513 吉哥系列故事——完美队形II(枚举法求回文串)
- hdu 4513 吉哥系列故事——完美队形II
- 【最长回文】HDU 4513 吉哥系列故事——完美队形II
- hdu 4513 吉哥系列故事——完美队形II
- 吉哥系列故事——完美队形II - HDU 4513 最长回文串
- hdu 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事——完美队形II manacher求最长回文
- 【manacher】 HDOJ 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事——完美队形II(Manacher)
- hdu-4513 吉哥系列故事——完美队形II 【Manacher】
- io流
- 数据分析及机器学习环境配置(docker极简入门指南)
- editPlus使用技巧
- 饿了么项目---1、vue-cli快速构建项目(包括兼容老项目时需引入bootstrap、jquery的方法)
- 引导页面
- hdu4513_吉哥系列故事——完美队形II
- 人工智能
- 写在前面 程序员 迷茫且坚定地向前走着(一)
- android 频道管理的实现
- web测试方法总结(四)
- SpringMVC相关
- Hibernate03(查询)
- 向上取整⌈⌉ 和 向下取整⌊⌋ 和四舍五入
- Mybatis SqlSessionTemplate 源码解析