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): 3111    Accepted Submission(s): 1214

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 <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <queue>
using namespace std;
typedef long long ll;
int p[],a[];
int n,t,i;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(p,,sizeof(p));
for(i=;i<=n*;i++)
{
a[i]=;
if(i%==)scanf("%d",&a[i]);
}
a[n*+]=;
a[n*+]=;
int id=,maxlen=;
for(i=;i<*n-;i++)
{
if(p[id]+id>i) p[i]=min(p[id*-i],p[id]+id-i);
else p[i]=;
while(a[i-p[i]]==a[i+p[i]] && (a[i-p[i]]<=a[i-p[i]+] || a[i-p[i]]==))++p[i];
if(id+p[id]<i+p[i])id=i;
if(maxlen<p[i]) maxlen=p[i];
}
printf("%d\n",maxlen-);
}
return ;
}

最新文章

  1. 四、jquery中的事件与应用
  2. RunLoop
  3. 文件上传(java web)
  4. [Tex学习笔记]写文章需要规范、需要引用到位. [LaTeX代码]
  5. Servlet、JSP选择题
  6. 青蛙的烦恼(dp好题)
  7. bzoj 2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
  8. 小票打印机指令集封装(支持EPSON指令)
  9. Azure SQL 数据库新服务级别现已正式发布
  10. DAC,MAC和SELinux,SEAndroid
  11. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)
  12. 爬虫学习-使用CrawlSpider
  13. .net ElasticSearch-Sql 扩展类
  14. input表单的type属性详解,不同type不同属性之间区别
  15. Java-NIO(九):管道 (Pipe)
  16. ejs常用语法
  17. Python基础之模块与包
  18. springboot的三种启动方式
  19. 移动端触屏滑动,JS事件
  20. 软件测试职业规划的思考(转)(作者Findyou

热门文章

  1. HTTP——状态码
  2. 【linux驱动分析】misc设备驱动
  3. 【Android进阶篇】Fragment的两种载入方式
  4. Hibernate是怎么工作的——Hibernate的工作流程
  5. IIS Express加入MIME映射
  6. HTML5 界面元素 Canvas 參考手冊
  7. Android jni 二维数组 传递
  8. nyoj--46--最少乘法次数(数学+技巧)
  9. [AGC018 B] Sports Festival 解题报告
  10. [HNOI2008] GT考试(DP+矩阵快速幂+KMP)