hdu 4513 吉哥系列故事——完美队形II_Manacher算法
2014-04-21 19:58
330 查看
题目链接
题意:
吉哥又想出了一个新的完美队形游戏!
假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h
,吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形:
1、挑出的人保持原队形的相对顺序不变,且必须都是在原队形中连续的;
2、左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然如果m是奇数,中间那个人可以任意;
3、从左到中间那个人,身高需保证不下降,如果用H表示新队形的高度,则H[1] <= H[2] <= H[3] .... <= H[mid]。
现在吉哥想知道:最多能选出多少人组成新的完美队形呢?
思路:改改Manacher算法的模板就行了
题意:
吉哥又想出了一个新的完美队形游戏!
假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h
,吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形:
1、挑出的人保持原队形的相对顺序不变,且必须都是在原队形中连续的;
2、左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然如果m是奇数,中间那个人可以任意;
3、从左到中间那个人,身高需保证不下降,如果用H表示新队形的高度,则H[1] <= H[2] <= H[3] .... <= H[mid]。
现在吉哥想知道:最多能选出多少人组成新的完美队形呢?
思路:改改Manacher算法的模板就行了
#include <iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXN 300010 int n,p[MAXN]; int s[MAXN],str[MAXN]; void kp(){ int i,mx=0,id,a,b; for(i=n;str[i]!=0;i++) str[i]=0; for(i=1;i<n;i++){ if(mx>i) p[i]=min(p[2*id-i],mx-i); else p[i]=1; while(str[i+p[i]]==str[i-p[i]]){ if(str[i+p[i]]==0){ p[i]++; }else{ a=i-p[i]; b=i+p[i]; if(str[a]<=str[a+2]&&str[b-2]>=str[b]){//保持递增 p[i]++; continue; } break; } } if(p[i]+i>mx){ mx=p[i]+i; id=i; } } } void init(){ int i,j,k; str[0]=-1; str[1]=0; for(i=0;i<n;i++){ str[i*2+2]=s[i]; str[i*2+3]=0; } n=n*2+2; s =0; } int main(int argc, char** argv) { int i,ans,t; scanf("%d",&t); while(t--){ scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&s[i]); init(); kp(); ans=0; for(i=0;i<n;i++) if(p[i]>ans) ans=p[i]; printf("%d\n",ans-1); } return 0; }
相关文章推荐
- hdu 4513 吉哥系列故事——完美队形II(最大回文子串-manacher算法)
- HDU 4513 吉哥系列故事――完美队形II(Manacher算法)
- hdu 4513 吉哥系列故事――完美队形II (Manacher)
- hdu 4513 吉哥系列故事——完美队形II(manacher)
- hdu 4513 吉哥系列故事——完美队形II
- hdu 4513 吉哥系列故事——完美队形II -- (最长回文字串 )
- HDU 4513 吉哥系列故事——完美队形II(Manacher)
- hdu 4513 吉哥系列故事——完美队形II(最长回文串)
- HDU 4513 吉哥系列故事――完美队形II(Manacher)
- HDU - 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事――完美队形II
- HDU 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事――完美队形II(manacher)
- hdu-4513 吉哥系列故事——完美队形II 【Manacher】
- hdu 4513 吉哥系列故事——完美队形II ( manacher+dp )
- HDU 4513 吉哥系列故事——完美队形II(Manacher)
- 吉哥系列故事——完美队形II - HDU 4513 最长回文串
- HDU 4513 吉哥系列故事——完美队形II manacher求最长回文
- HDU 4513 吉哥系列故事——完美队形II (Manacher变形)
- hdu 4513 吉哥系列故事——完美队形II