http://acm.hdu.edu.cn/showproblem.php?pid=4513

吉哥系列故事——完美队形II

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1544    Accepted Submission(s): 577

Problem Description
  吉哥又想出了一个新的完美队形游戏!
  假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形:

  1、挑出的人保持原队形的相对顺序不变,且必须都是在原队形中连续的;
  2、左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然如果m是奇数,中间那个人可以任意;
  3、从左到中间那个人,身高需保证不下降,如果用H表示新队形的高度,则H[1] <= H[2] <= H[3] .... <= H[mid]。

  现在吉哥想知道:最多能选出多少人组成新的完美队形呢?

 
Input
  输入数据第一行包含一个整数T,表示总共有T组测试数据(T <= 20);
  每组数据首先是一个整数n(1 <= n <= 100000),表示原先队形的人数,接下来一行输入n个整数,表示原队形从左到右站的人的身高(50 <= h <= 250,不排除特别矮小和高大的)。
 
Output
  请输出能组成完美队形的最多人数,每组输出占一行。
 
Sample Input
2
3
51 52 51
4
51 52 52 51
 
Sample Output
3
4
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm> using namespace std;
#define INF 0x3f3f3f3f
#define N 2000007 int s[N], S[N], p[N]; int Manacher(int len)
{
int MaxLen = , index = , ans = ; for(int i=; i<len; i++)
{
if(MaxLen>i) p[i] = min(p[index*-i], MaxLen-i);
else p[i] = ; while(s[i-p[i]]==s[i+p[i]] && (s[i-p[i]]==- || p[i]== || s[i-p[i]]<=s[i-p[i]+]))
p[i]++; if(p[i]+i>MaxLen)
{
MaxLen = p[i] + i;
index = i;
} ans = max(ans, p[i]);
}
return ans-;
} int main()
{
int t;
scanf("%d", &t);
while(t--)
{
int n, i; scanf("%d", &n);
s[] = INF;
for(i=; i<n; i++)
{
scanf("%d", &S[i]);
s[i*+] = -;
s[i*+] = S[i];
}
s[i*+] = -;
s[i*+] = -INF; printf("%d\n", Manacher(n*+));
}
return ;
}

最新文章

  1. Android源码——Logger日志系统
  2. iOS runtime 初步学习
  3. matlab 中txt文件(含字符及数值)处理
  4. OpenGL Pixel Linked-List
  5. 理解NDCG
  6. sublime text2 汉化
  7. 声明顺序 (Bootstrap 编码规范)
  8. 基于 Bootstrap 的扁平化 UI 开发包
  9. postman中 form-data、x-www-form-urlencoded、raw、binary的区别
  10. hadoop原理
  11. 移动网站用backbone还是angular?
  12. 【洛谷P1090 合并果子】
  13. Ubuntu之sudo权限管理/etc/sudoers文件
  14. 内核探测工具systemtap简介【转】
  15. 《Miracle-House团队》第二次作业:西小餐项目开题报告
  16. php stomp.dll 下载地址
  17. 软件工程作业 - Week 1
  18. eclipse启动优化文章集合
  19. perf4j 监控请求 + traceId区分日志
  20. python 爬虫系列05--丑事百科

热门文章

  1. CPU Meltdown和Spectre漏洞分析
  2. zookeeper 初步学习
  3. JSP复习
  4. IntelliJ IDEA教程
  5. Gviz
  6. 136. Single Number (Bit)
  7. unix架构
  8. TZOJ 2755 国际象棋(广搜+哈希)
  9. git format-patch 用法【转】
  10. sublime Text与python3的中文编码错误解决办法