【POJ 3974】Palindrome
2024-08-28 21:05:03
http://poj.org/problem?id=3974
Manacher模板题。Menci的博客讲得很好
有一点:Menci的代码中的right我感觉是代表能延伸到的最右端点的右边的点,因为r(i)表示包括中心点的回文半径。
不知道理解有没有错误,如果神犇发现了我的理解的错误请告诉本蒟蒻qwq
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1000003;
int len, r[N << 1];
char c[N], s[N << 1];
void pre() {
int clen = strlen(c);
len = 0;
s[++len] = '!';
s[++len] = '#';
for (int i = 0; i < clen; ++i)
s[++len] = c[i], s[++len] = '#';
s[++len] = '&';
}
int cas = 0;
void Manacher() {
int ans = 0, mid = 0, right = 1, x;
for (int i = 1; i <= len; ++i) {
if (i >= right) x = 1;
else x = min(r[(mid << 1) - i], right - i);
while (s[i - x] == s[i + x]) ++x;
ans = max(ans, r[i] = x);
if (i + x > right) right = i + x, mid = i;
}
printf("Case %d: %d\n", ++cas, ans - 1);
}
int main() {
while (scanf("%s", c), memcmp(c, "END", 4) != 0) {
pre();
Manacher();
}
}
最新文章
- 高性能文件缓存key-value存储—Redis
- 发现struct proc_dir_entry内核3.10.17移到internal中去了,倒
- 查看LINUX进程内存占用情况
- JS鼠标滑轮事件的写法和按键的事件
- iOS socket编程 第三方库 AsyncSocket(GCDAsyncSocket)
- UAF漏洞--iOS是越狱原理
- ASP.NET/MVC 配置log4net启用写错误日志功能
- HDU 1241 DFS
- 根据PV统计出前三的热门板块,并统计出热门板块下的用户数--方式一
- 【BZOJ2946】公共串(后缀数组)
- python基础知识点(unittest)
- .net压缩文件夹
- Quartz.net 定时任务之储存与持久化和集群(源码)
- 1: java开发_";";和null的区别
- 【Redis】使用Jedis操作Redis
- Java参数传值?or传引用?
- 手动安装Silverlight 4 Tools for Visual Studio 2010
- vue中刷新页面时去闪烁,提升体验方法
- Android面试经历2018
- Elasticsearch 使用技巧笔记
热门文章
- 【BZOJ】1718: [Usaco2006 Jan] Redundant Paths 分离的路径
- recycleView实现item点击更改该item颜色,其它item颜色变回
- 8.0docker的客户端和守护进程
- python 学记笔记 SQLalchemy
- 定制LFS镜像及安装过程
- Jquery屏蔽浏览器的F1-F12快捷键,在IE,GOOGLE下测试均无问题
- leetcode 之Gas Station(11)
- hrbust - 2239
- ES6 module语法加载 import export
- C# 中从程序中下载Excel模板