当前位置: 首页 > news >正文

HDU 4513 哥几个系列故事——形成完善II manacher求最长回文

标题来源:哥几个系列故事——形成完善II

意甲冠军:中国

思维:在manacher断 保证非严格递减即可了

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100110;
int a[maxn<<1];
int b[maxn<<1];
int dp[maxn<<1];
int manacher(int n)
{
	int maxlen = 0, id, ans = 0;
	for(int i = 1; i < n; i++)
	{
		if(maxlen > i)
			dp[i] = min(dp[id*2-i], maxlen-i);
		else
			dp[i] = 1;
		int flag = 0, x = 1;
		if(a[i] != 1)
		{
			flag = 1;
			x = a[i];
		}
		while(a[i+dp[i]] == a[i-dp[i]])
		{
			if(a[i+dp[i]] == 1)
				dp[i]++;
			else
			{
				if(!flag)
				{
					x = a[i+dp[i]];
					dp[i]++;
					flag = 1;
				}
				else
				{
					if(a[i+dp[i]] > x)
						break;
					x = a[i+dp[i]];
					dp[i]++;
				}
			}
		}
		if(dp[i]+i > maxlen)
		{
			id = i;
			maxlen = dp[i]+i;
		}
		if(ans < dp[i])
			ans = dp[i];
	}
	return ans-1;
}
int main()
{
	int T;
	scanf("%d", &T);
	while(T--)
	{
		int n;
		scanf("%d", &n);
		a[0] = -1;
		a[1] = 1;
		for(int i = 1; i <= n; i++)
		{
			scanf("%d", &a[i<<1]);
			a[i<<1|1] = 1;
		}
		n = n*2+2;
		a[n] = 2;
		printf("%d\n", manacher(n));
	}
	return 0;
}


 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

相关文章:

  • Tip:Exchange启用POP3和IMAP4服务
  • OneProxy中间件生产使用经验视频分享
  • nodejs学习笔记-EventEmitter使用
  • 二维数组
  • C#中的基本数据类型
  • 恢复HP C7000 OA(Onboard Administrator)密码
  • 如何实现可动态调整隐藏header的listview
  • GeoGlobe Server运维
  • redis之sentinel
  • Linking different libraries for Debug and Release builds in Cmake on windows?
  • java中final关键字的总结
  • TCP/IP 网络编程(六)
  • Android开发框架--AndroidAnnotations(一)
  • 图片缓存负载
  • 最大流问题
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【Amaple教程】5. 插件
  • JavaScript对象详解
  • JavaScript设计模式系列一:工厂模式
  • JS笔记四:作用域、变量(函数)提升
  • js算法-归并排序(merge_sort)
  • Python学习之路16-使用API
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 对JS继承的一点思考
  • 使用docker-compose进行多节点部署
  • 王永庆:技术创新改变教育未来
  • # include “ “ 和 # include < >两者的区别
  • #laravel 通过手动安装依赖PHPExcel#
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (四) 虚拟摄像头vivi体验
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一) springboot详细介绍
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)c++ std::pair 与 std::make
  • (转)ObjectiveC 深浅拷贝学习
  • (转)用.Net的File控件上传文件的解决方案
  • .net开发引用程序集提示没有强名称的解决办法
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • :=
  • @ConfigurationProperties注解对数据的自动封装
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [《百万宝贝》观后]To be or not to be?
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [Android] Android ActivityManager
  • [BT]BUUCTF刷题第9天(3.27)
  • [CF226E]Noble Knight's Path
  • [codevs1288] 埃及分数
  • [CTSC2014]企鹅QQ
  • [Git 1]基本操作与协同开发
  • [hive小技巧]同一份数据多种处理
  • [java基础揉碎]关系运算符(比较运算符)逻辑运算符赋值运算符三元运算符运算符的优先级
  • [LeetCode] Ransom Note 赎金条