【Manacher】最长双回文串(luogu 4555)
正题
luogu 4555
题目大意
给出一个字符串,让你求两个相邻的回文串的最大长度和
解题思路
先用Manacher求出最长回文串
然后暴力配对即可
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 200021
using namespace std;
int n, ans, l[N], r[N], v[N], s[N];
string str;
void Manacher()
{int mid = 0, mx = 0;for (int i = 1; i <= n; ++i){if (i < mx) v[i] = min(v[mid * 2 - i], mx - i);else v[i] = 1;while(s[i + v[i]] == s[i - v[i]]) v[i]++;if (i + v[i] > mx){mx = i + v[i];mid = i;}r[i - v[i] + 1] = max(r[i - v[i] + 1], v[i] - 1);//存下以某个点为左端的最大回文串l[i + v[i] - 1] = max(l[i + v[i] - 1], v[i] - 1);}return;
}
int main()
{cin>>str;n = str.size();s[0] = s[1] = '#';for (int i = 1; i <= n; ++i){s[i * 2] = str[i - 1];s[i * 2 + 1] = '#';}n = n * 2 + 2;s[n] = 0;Manacher();for (int i = 2; i <= n; ++i){r[i] = max(r[i], r[i - 2] - 2);//减少一个长度if (l[i] && r[i]) ans = max(ans, l[i] + r[i]);}printf("%d", ans);return 0;
}
【Manacher】最长双回文串(luogu 4555)相关推荐
- bzoj 2565: 最长双回文串 manacher算法
2565: 最长双回文串 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem. ...
- [国家集训队]最长双回文串 manacher
---题面--- 题解: 首先有一个直观的想法,如果我们可以求出对于位置i的最长后缀回文串和最长前缀回文串,那么我们枚举分界点然后合并前缀和后缀不就可以得到答案了么? 所以我们的目标就是求出这两个数列 ...
- BZOJ 2565: 最长双回文串
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1769 Solved: 895 [Submit][Status][Dis ...
- 青橙 A1280. 最长双回文串
A1280. 最长双回文串 时间限制:2.0s 内存限制:512.0MB 总提交次数: AC次数: 平均分: 将本题分享到: 查看未格式化的试题 提交 试题讨论 试题来源 中国 ...
- 【BZOJ2565】最长双回文串(回文树)
[BZOJ2565]最长双回文串(回文树) 题面 BZOJ 题解 枚举断点\(i\) 显然的,我们要求的就是以\(i\)结尾的最长回文后缀的长度 再加上以\(i+1\)开头的最长回文前缀的长度 至于最 ...
- HYSBZ 2565 最长双回文串 (回文树)
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1377 Solved: 714 [Submit][Status][Dis ...
- P4555-[国家集训队]最长双回文串【Manacher】
正题 题目链接:https://www.luogu.com.cn/problem/P4555 题目大意 长度为nnn的串,双回文串的定义是两个连续的回文串,求最长的双回文串. 解题思路 我们用马拉车维 ...
- BZOJ 2565 最长双回文串 Manacher
题目大意: 定义双回文串G是指一个可以被拆分成两个部分(S和T)的字符串G = S + T, 且S和T都是回文串的串, G自己本身可以不是回文串 给出一个长度为n ( 2 <= n <= ...
- 2682. 【WC2012选拔12.17】最长双回文串
Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba",不相同). 输 ...
- P4555 最长双回文串
题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为 n的串 S ,求 S的最长双回文子串 T ,即可将 ...
最新文章
- 2435: [Noi2011]道路修建
- P2831 愤怒的小鸟
- 【分享】怎样学习一门新技术?
- C#中lock死锁实例教程
- java-HashSet源码学习
- 使用Sidecar支持异构平台的微服务
- php event loop,理解javascript中的事件循环(Event Loop)
- iphone8plus屏幕尺寸_百思买在苹果发布会前列出了一款“iPhone SE Plus”屏幕保护保护膜...
- yaml 数组_使用 YAML 保存游戏数据 !
- [War3]Fdf文件详解,简单的UI教程演示 - 魔兽争霸3
- 逆向学习之Hook技术
- Cython 的简要入门、编译及使用
- 为什么现在的智能手机,都被设计成不可更换电池?
- 公共数据库介绍~OECD经合组织数据库
- like功能以及check功能
- 使用Zerotier实现免费内网穿透
- 方舟生存服务器没有响应怎么办,方舟生存进化搜服务器闪退怎么办? Fata error临时解决办法一览...
- Python curses使用
- 生产物流系统建模与仿真-基于WITNESS建模视频教程
- 看EyeEm如何在产品开发中整合、运用深度学习模型
热门文章
- 参加计算机竞赛需要学什么知识,数学和计算机专业,我应该参加那些比赛?
- linux基础 linhaifeng,Linux基础之命令练习Day2(示例代码)
- xencenter vgpu 看不见_有一种设计是“看不见,但感受得到”
- infor wms 项目启动_广汽本田增城工厂No.2L WMS项目正式启动
- cas 4.2.7 官方手册_海城市地区,保险手册核验的简单流程
- Leetcode周赛复盘——第 278 场力扣周赛
- 高等数学下-赵立军-北京大学出版社-题解-练习12.4
- 《C++ Primer》2.6.1节练习
- number two
- 文件夹复制 覆盖_软网应用:U盘即插即复制