题目链接:Codeforces 451D Count Good Substrings
题目大意:定义good string,就是就一个字符串的连续相同字符用一个该字符替代后,形成回文串的字符串。现在给出一个字符串,问说该字符串的子串中,为good string的串有多少个,分长度为奇数和偶数的输出。
解题思路:因为字符串的组成为a和b,所以只要是头尾相同的子串都是满足的。所以我们计算在...
分类:
其他好文 时间:
2014-07-26 03:03:36
阅读次数:
268
回文串的问题很经典,也很常见,涉及到递归,循环,动态规划等方面,这里总结一下几种类型,供以后回顾,有问题请大家指正
1、回文串的判断
leetcode上的题目
bool isPalindrome(const char* src)
{
if(src == NULL)return true;
int end = strlen(src)-1,begin = 0;
while(beg...
分类:
其他好文 时间:
2014-07-24 17:42:06
阅读次数:
262
http://acm.hdu.edu.cn/showproblem.php?pid=4632题意:一个字符串,有多少个subsequence是回文串。别人的题解:用dp[i][j]表示这一段里有多少个回文串,那首先dp[i][j]=dp[i+1][j]+dp[i][j-1],但是dp[i+1][j]...
分类:
Web程序 时间:
2014-07-23 16:31:51
阅读次数:
365
题目链接题意 :给你一个字符串,让你删除或添加某些字母让这个字符串变成回文串,删除或添加某个字母要付出相应的代价,问你变成回文所需要的最小的代价是多少。思路 :DP[i][j]代表的是 i 到 j 这一段位置变成回文所需的最小的代价。 1 //3280 2 #include 3 #include ....
分类:
其他好文 时间:
2014-07-22 22:46:35
阅读次数:
217
Manacher算法首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做....
分类:
其他好文 时间:
2014-07-22 00:00:36
阅读次数:
340
题目大意:给定一个字符串,求最少插入几个字符让该字符串成为回文串
法一:
dp[i][j]表示使区间[i,j]成为回文串最小插入的字符数,则状态转移方程
1、if s[i]==s[len-1] 则:d[i][j]=d[i+1][j-1]
2、else d[i]=min(dp[i+1][j],dp[i][j-1])
首尾字符不同的时候,有两种决策。
1、将新字符插在首位,那么状态就...
分类:
其他好文 时间:
2014-07-21 23:30:01
阅读次数:
255
给一字符串,问最少加几个字符可以让它成为回文串
比如 Ab3bd 最少需要两个字符可以成为回文串 dAb3bAd
思路:
动态规划 DP[i][j] 意味着从 i 到 j 这段字符变为回文串最少要几个字符,枚举子串长。
if str[i] == str[j]:
DP[i][j] = DP[i + 1][j - 1]
else:
DP[i][j] = min( DP[i +...
分类:
其他好文 时间:
2014-07-19 02:35:45
阅读次数:
198
又见回文串
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。今天,PIAOYI又遇见一个关于字符串的题:两人玩一个游戏,给一个字符串,两人轮流删除字符串中的任意一个字符,当某人删除字符后,若该字符串可以经过重新整理后是一个回文串,则他获胜。当两人足够聪明均不出...
分类:
其他好文 时间:
2014-07-18 11:17:41
阅读次数:
172
参见hdu 3068 的manacher算法
代码如下:#include
#include
#define M 110010
int s[M],ss[M*2];//s代表原来的字符串,ss代表插入之后的字符串
int p[M*2]; //表示以i为中心的(包含i这个字符)回文串半径长
int min(int a,int b)
{
return a>b?b:a;
}
int mai...
分类:
其他好文 时间:
2014-07-18 11:06:33
阅读次数:
249
还是回文时间限制:2000ms | 内存限制:65535KB难度:3描述判断回文串很简单,把字符串变成回文串也不难。现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。那么,将字符串变成回文串的最小花费是多少呢?输入多组数据第一个有两个数n,m,分别表示字符的...
分类:
其他好文 时间:
2014-07-17 14:18:35
阅读次数:
252