题目大意给出一个字符串,求出这个字符串的最长回文子串。思路前来学习著名的Manacher算法。
这是一个线性时间求出回文子串的算法。具体来说,对于我们弄出的一个回文串,它对于后面的串并不是,没有用的,因为它的左右两侧是相同的,那么自然可以用左边的信息去更新右边。
设p[i]p[i]为第ii个字符的回文半径,_max\_max为max{p[i]+i}max\{p[i] + i\},也就是最远可以更...
分类:
其他好文 时间:
2015-04-07 09:47:35
阅读次数:
119
后缀数组求有多少个不同的回文串
The Number of Palindromes
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 1976 Accepted Submission(s): 690
P...
分类:
编程语言 时间:
2015-04-05 20:34:16
阅读次数:
209
#include
using namespace std;
#include
bool isPalindromeNumber(long num)
{
if(num<0)
return false;
long temp=num;
long y=0;
while(temp)
{
y=y*10+temp%10;
temp/=10;
}
return num==y;
re...
分类:
其他好文 时间:
2015-04-03 17:23:49
阅读次数:
97
A题:给出一个长度为n的字符串,操作:在这个字符串的任意位置(前后也可以)插入一个字符,使之成为一个回文串,而且,即使这个字符串本身就是回文串,你也必须插入一个字符。若无法达成目的,输出"NA"由于题意n 2 #include 3 char s[11]; 4 int main() 5 { 6 ...
分类:
其他好文 时间:
2015-04-02 06:34:24
阅读次数:
115
题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 1 /* 2 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 3 DP:很巧妙的从i出发向两头扩展判断是否相同来找回文串 4 ...
分类:
其他好文 时间:
2015-04-01 21:30:11
阅读次数:
119
回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,这个算法做了个简单的处理把奇偶情况统一了。算法的基本思路是这样的,把原串每个字符中间用一个串中没出现过的字符分隔开来(统一奇偶),用一个数组p[ i ]记录以 str[ i ] 为中间字符的回文串向右能匹配的长度。先看个例子原串: w a a...
分类:
编程语言 时间:
2015-04-01 15:08:14
阅读次数:
136
Queries for Number of PalindromesProblem's Link: http://codeforces.com/problemset/problem/245/HMean:给你一个字符串,然后q个询问:从i到j这段字符串中存在多少个回文串。analyse:dp[i][j]...
分类:
其他好文 时间:
2015-04-01 12:54:27
阅读次数:
110
Queries for Number of PalindromesProblem's Link: http://codeforces.com/problemset/problem/245/HMean:给你一个字符串,然后q个询问:从i到j这段字符串中存在多少个回文串。analyse:dp[i][j]...
分类:
其他好文 时间:
2015-03-31 19:44:08
阅读次数:
110
题意:判断一个串能否通过临近的两个字符多次交换变成回文串,不能输出“Impossible”,能的话输出最少的交换次数。
思路:预处理每个字母出现的次数,若有>=2个字母出现的次数是奇数则不可能。然后从两边向中间贪心,每次先固定前端,然后从后端向中间逐步找,直到找到第一个与前端相同字母时break,将找到的字母向后移,加上移动的次数(不知道为什么可以这么做,网上说这样做 和 每次找最优 最后结果是一样的,暂时还没有证明出来)。若碰到个数为奇数的字母时,将它往后顺移,最后它就会在中央位置了。...
分类:
其他好文 时间:
2015-03-31 14:50:46
阅读次数:
118
题意:给你一个字符串,再给你一个q(询问个数1000000),问你这个区间内回文串的个数。解题思路:1)dp,先把 i 到j 是回文串的真值赋值给 dp[i][j] ,然后从后往前dp dp[i][j] += dp[i+1][j] + dp[i][j-1] -dp[i+1][j-1];解题代码: ....
分类:
其他好文 时间:
2015-03-30 18:19:19
阅读次数:
145