hdu 3068 最长回文(manachar求最长回文子串)
解题思路:通过manachar算法求最长回文子串,如果用遍历的话绝对超时。
#include <stdio.h>
#include <string.h> const int N = 220005; int rad[N];
char string[N], tmpstr[N]; int max(int a, int b) {
return a > b ? a : b;
}
int min(int a, int b) {
return a < b ? a : b;
} int manachar() {
int ans = 0, mix = 0, id = 0, len = strlen(string);
for (int i = 1; i <= len; i++) {
if (mix > i)
rad[i] = min(rad[2 * id - i], mix - i);
else
rad[i] = 1; for ( ; string[i - rad[i]] == string[i + rad[i]]; rad[i]++) {
if (mix < i + rad[i]) {
mix = i + rad[i];
id = i;
}
} ans = max(ans, rad[i]);
}
return ans - 1;
} int main() {
while (gets(tmpstr)) {
int len = strlen(tmpstr), cnt = 0;
string[cnt++] = '$';
for (int i = 0; i <= len; i++) {
string[cnt++] = '#';
string[cnt++] = tmpstr[i];
}
getchar();
printf("%d\n", manachar());
}
return 0;}
hdu 3068 最长回文(manachar求最长回文子串)的更多相关文章
- HDU 4612 Warm up tarjan缩环+求最长链
Warm up Problem Description N planets are connected by M bidirectional channels that allow instant ...
- HDU 1243 反恐训练营 (动态规划求最长公共子序列)
反恐训练营 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- HDU - 6201 transaction transaction transaction(spfa求最长路)
题意:有n个点,n-1条边的无向图,已知每个点书的售价,以及在边上行走的路费,问任选两个点作为起点和终点,能获得的最大利益是多少. 分析: 1.从某个结点出发,首先需要在该结点a花费price[a]买 ...
- HDU 1224 Free DIY Tour(spfa求最长路+路径输出)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1224 Free DIY Tour Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 3308 线段树,单点更新 求最长连续上升序列长度
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- codevs 1862 最长公共子序列(求最长公共子序列长度并统计最长公共子序列的个数)
题目描述 Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y ...
- 【HDU 3068】 最长回文
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/s ...
- hdu 3068 最长回文 (Manacher算法求最长回文串)
参考博客:Manacher算法--O(n)回文子串算法 - xuanflyer - 博客频道 - CSDN.NET 从队友那里听来的一个算法,O(N)求得每个中心延伸的回文长度.这个算法好像比较偏门, ...
- 最长回文子串(百度笔试题和hdu 3068)
版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123559 求一个字符串的最长回文子串.注 ...
随机推荐
- 【Xamarin 挖墙脚系列:Xamarin SDK开源了................】
在前不久举行的 Build 2016 开发者大会上,微软宣布它收购的 Xam ...
- Kolmogorov复杂性
原文-wiki 看Kolmogorov复杂性看到云里雾里,于是干脆把wiki上的翻译了一下. [toc] Chaitin complexity, algorithmic entropy, progra ...
- 剑指offer57 删除链表中重复的结点
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(!pHead) return pHead; str ...
- 使用ashx一般处理程序,读取不到Session的问题
一般的处理程序文件里面是用不了Session的,必须得实现Session接口才可以用. public class RandomCode : IHttpHandler, System.Web.Sessi ...
- Fast RCNN 学习
因为项目需要,之前没有接触过深度学习的东西,现在需要学习Fast RCNN这个方法. 一步步来,先跟着做,然后再学习理论 Fast RCNN 训练自己数据集 (1编译配置) Fast RCNN 训练自 ...
- iOS 监听 出发 Home键 NSNotificationCenter UIApplicationWillResignActiveNotification
第一步: 创建2个NSNotificationCenter监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@sel ...
- Android开发之自定义圆角矩形图片ImageView的实现 - Jamy Cai
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap ...
- GCD实现简单的单例类-Singletion
什么是单例模式 1.单例模式是一个类在系统中只有一个实例对象.通过全局的一个入口点对这个实例对象进行访问.在 iOS 开发中,单例模式是非常有用的一种设计模式.如 下图,是一个简单单例模式的 UML ...
- shell 学习
将maven 项目里面的jar 包导出目录: 在项目里面执行: mvn dependency:copy-dependencies -DoutputDirectory=lib shell 参数之间必有空 ...
- zoj 1149 Dividing
1到6的卡分别各有有限制的张数,问能不能恰好分,总张数不能超过20000. 很明显是多重背包问题,上去果写了个三重循环,然后就T了,重新打开背包九讲,找到了多重背包的二进制拆分优化,把其中一维n的复杂 ...