题目链接:[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher V - 吉哥系列故事――完美队形II

题意

  吉哥又想出了一个新的完美队形游戏!
  假设有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]。

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

思路

跟HDU 3068 最长回文(Manacher)差不多,也是求回文串长度,区别就是多了一个非递减的约束条件,加上判断即可。

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>using namespace std;const int N = 100009;
int s[N*2], p[N*2];int manacher(int len)
{int mx = 0, id = 0, ans = 1;p[0] = 0;for(int i=1; i<len; i++){p[i] = 1;if(mx > i)p[i] = min(mx-i, p[2*id-i]);while(s[i-p[i]] == s[i+p[i]] && s[i-p[i]] <= s[i-p[i]+2])p[i]++;if(i+p[i] > mx)mx = i+p[i], id = i;if(ans < p[i]-1)ans = p[i]-1;}return ans;
}int main()
{int T;scanf("%d", &T);while(T--){int n;scanf("%d", &n);s[0] = -1;for(int i=1; i<=n; i++){s[i*2-1] = 0;scanf("%d", &s[i*2]);}s[2*n+1] = 0;printf("%d\n", manacher(2*n+1));}return 0;
}

HDU 4513 吉哥系列故事――完美队形II(Manacher)相关推荐

  1. HDU - 4513 吉哥系列故事——完美队形II(Manacher)

    题目链接:点击查看 题目大意:给出一个长度为n的数列,现在要求选出一段连续的数列,满足: 该数列为回文串 该数列的左半部分非严格递增 输出选取数列的最大长度 题目分析:因为是要选取连续的子串,并且还需 ...

  2. HDUOJ 4513 吉哥系列故事——完美队形II

    HDUOJ 4513 吉哥系列故事--完美队形II Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] - ...

  3. 吉哥系列故事——完美队形II(hdu4513+Manacher)

    吉哥系列故事--完美队形II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) T ...

  4. HDU 4512 吉哥系列故事――完美队形I(最长公共上升子序列)

    吉哥系列故事--完美队形I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  5. 吉哥系列故事――完美队形II(HDU-4513)

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

  6. hdu 4512 吉哥系列故事——完美队形I(最长公共上升自序加强版)

    首先要去学习最长公共上升子序列LCIS.然后是对n*n效率的算法进行优化,这里要注意的是能够求出来的序列中间能够有一个最高的.刚開始将输入的数组进行逆置,写下来发现这可能存在问题. 只是详细是什么也没 ...

  7. HDU 4502 吉哥系列故事——临时工计划(动态规划)

    吉哥系列故事--临时工计划                                                                                      T ...

  8. HDU 4507 吉哥系列故事――恨7不成妻 数位DP

    吉哥系列故事--恨7不成妻 Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  9. HDU 4535 吉哥系列故事——礼尚往来

    http://acm.hdu.edu.cn/showproblem.php?pid=4535 题目大意: 有n个妹纸没人送给吉哥一个礼物,他决定进行合理的分配,即将这些礼物送回去,就不用花钱买新礼物了 ...

最新文章

  1. CentOS6.3.x86_64安装Trac
  2. oracle aul 索引,ORACLE恢復神器之ODU/AUL/DUL
  3. 执行sql语句提示[Err] 1055 - Expression #2 of SELECT list is not in GROUP BY......错误的解决办法
  4. FFMPEG设置 cbr讨论
  5. python切面异常处理_Spring项目中优雅的异常处理
  6. 【需求工程】需求获取
  7. hadoop-02-关闭防火墙
  8. wepy小程序分包的版本
  9. 四面八方的意思是什么,怎么用四面八方造句?
  10. koa2 mysql sequelize_使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口
  11. wifi抓包/苹果电脑mac book抓wifi sniffer packet
  12. 制作便携版 FireFox 火狐浏览器
  13. 【DIY分享】示波器(原理图+源码+仿真)
  14. excel 复制到mysql_excel导入数据到mysql
  15. item的介绍与使用-2.0
  16. 爬虫 Scrapy 学习:Spiders
  17. ionic emulate实时调试修改
  18. 鸿鹄云商平台--技术框架
  19. 高盛vr/ar研究报告
  20. RocketMQ消息发送源码解析

热门文章

  1. 原生安卓去除网络叉号
  2. Android11编译导入PRODUCT_BOOT_JARS
  3. HBuilder将项目生成安卓手机app
  4. 做电商网站php开发的流程,如何开发电商平台-电商开发第一步
  5. 【Linux】系统编程——文件编程
  6. @Retryable @Backoff @Recover 重试注解的使用
  7. mac下配置Charles,安装证书
  8. skimage.filters.frangi函数
  9. Python 图片尺寸缩放的4种方式
  10. phpstorm+xdebug远程调试