pat L2-008 复习manacher
马上要去比赛了 复习一下最长回文串的长度。
算法的实现两个步骤;
1. 一个是对原串的处理,在所有的空隙位置(包括首尾)插入同样的符号,要求这个符号是不会在原串中出现的。这样会使得所有的串都是奇数长度的。
2.用p数组记录以i为中心的回文段的半径 实际的长度是p的值-1。然后就是对p数组的求解 两种大情况 三种小情况 这个就不多说了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int p[1001*2+2];
string s;
getline(cin,s);
string temp;
temp+="$#";//!!!! 前面的符号一开始加的是@ wa一万次, 气死老子,
for(int i=0;i<s.length();i++)// 插入'#'定向处理
{
temp+=s[i];
temp+='#';
}
s+='\0';//这个细节也要注意/
int maxlen=0,id=0;
memset(p,0,sizeof(p));
for(int i=2;i<temp.size();i++)
{
int k=i-id;
if(id+p[id]>i) p[i]=min(p[id-k],p[id]-k);// 这里用id+p[id]表示当前最大回文的边界 具体怎么
else p[i]=1;
while(temp[i-p[i]]==temp[i+p[i]]) p[i]++;
if(i+p[i]>id+p[id]) id=i;
if(maxlen<p[i]) maxlen=p[i];// 这里maxnlen 记录的就是最大的长度
}
cout<<maxlen-1<<endl;
return 0;
}
pat L2-008 复习manacher的更多相关文章
- pat L2--005 简单复习一下并差集
		布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席. 输入格式: ... 
- loj#6072 苹果树(折半搜索,矩阵树定理,容斥)
		loj#6072 苹果树(折半搜索,矩阵树定理,容斥) loj 题解时间 $ n \le 40 $ . 无比精确的数字. 很明显只要一个方案不超过 $ limits $ ,之后的计算就跟选哪个没关系了 ... 
- 南大算法设计与分析课程复习笔记(2)L2 - Asymptotics
		一.几种比较复杂度的符号 数据结构有描述,相关严格数学定义也不想说了,就这么过了吧. 二.最大子数组的几种解决方法 从最复杂的暴力解法过渡到最简单的动态规划 解析和代码见这里:http://www.c ... 
- PAT 甲级 1020 Tree Traversals (25分)(后序中序链表建树,求层序)***重点复习
		1020 Tree Traversals (25分) Suppose that all the keys in a binary tree are distinct positive intege ... 
- PAT 甲级 1086 Tree Traversals Again (25分)(先序中序链表建树,求后序)***重点复习
		1086 Tree Traversals Again (25分) An inorder binary tree traversal can be implemented in a non-recu ... 
- PAT 甲级 1064 Complete Binary Search Tree (30 分)(不会做,重点复习,模拟中序遍历)
		1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a bin ... 
- 复习二叉数 pat l2-006 数的遍历
		L2-006. 树的遍历 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点 ... 
- 《转载》PAT 习题
		博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ... 
- pat甲级题解(更新到1013)
		1001. A+B Format (20) 注意负数,没别的了. 用scanf来补 前导0 和 前导的空格 很方便. #include <iostream> #include <cs ... 
随机推荐
- 2018-2019-2 20165330《网络对抗技术》Exp7 网络欺诈防范
			目录 基础问题 相关知识 实验目的 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验目的 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 返回目录 实验内容 简 ... 
- windows下手动安装composer
			原文地址:http://www.cnblogs.com/JANCHAN/p/7735882.html 1.下载compser.phar 地址 https://getcomposer.org/downl ... 
- windows下安装MongoDB服务
			1,参考:https://www.cnblogs.com/lecaf/p/mongodb.html 2,要设置环境变量 3,设置用户 use admin 注:MongoDB安装好以后由默认的admi ... 
- curl_setopt(ch, option, value)函数上传文件
			bool curl_setopt ( resource $ch , int $option , mixed $value ) 为给定的cURL会话句柄设置一个选项 详细介绍请到:http://www. ... 
- [Mybatis]查询Sql得到一个字符串
			// find min date HashMap<String, String> minDateMap = new HashMap<String, String>(); min ... 
- 【学习笔记】QT常用类及应用
			一.QT基类: QObject 二.QT中常用的库 QT中的类根据功能划分在不同的库中,在用户属性.pro文件中可以看到. 三.Qt基本对话框的使用 常用5类: 通过类名可以直接调用类的静态成员函数. ... 
- JAVA 自定义对象集合 List<T>  根据自定义字段去重
			1.拥有自定义对象 MyUser @Data public class MyUser { private String userName; private String passWord; } 2.编 ... 
- 一百一十三:CMS系统之前台注册界面
			html {% from 'common/_macros.html' import static %}<!DOCTYPE html><html lang="en" ... 
- openstack核心组件--horizon web管理界面(5)
			一.horizon 介绍: 理解 horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 ... 
- CMDB项目
			实现功能 邮箱验证码注册 图片验证码登陆 生成验证码图片,前端请求图片: 获取验证码字符串,防入当前session: 获取前端用户名.密码.验证码: 判断验证码是否匹配,判断用户名和密码是否匹配. 设 ... 
