摘要: 跟UVa 10453 一个类型的题。题目:给定一个字符串,可以进行 添加任意一个字符,删除任意一个字符,替换任意位置的一个字符变为任意另一个字符 这三种操作,求使得该字符串变成回文串最少操作步数。添加一个字符与删除一个字符等效,因此只考虑添加。递推公式:dp[x][y]代表位置x到位置y的字符串变成回文串的最小操作数if ( str[x]==str[y] ) dp[x][y] = dp[x+1][y-1];else dp[x][y] = min(dp[x+1][y], dp[x][y-1], dp[x+1][y-1]) + 1; 1 #include <cstdio> 2 #inc 阅读全文
posted @ 2012-07-27 22:18 冰鸮 阅读(170) 评论(0) 推荐(0)
摘要: 一直都不太会做这种字符串的动规题,今天看了一份解题报告,才稍微有点明白。感觉方法跟求最长公共子序列有点像……之前遇到过几个类似的,改天一块整理一下。-------------------------------------------------------------------题目:给定一个字符串,最少添加几个字符,能使它变成一个回文串。递推公式:dp[x][y]代表从第x个字符到y个字符中间最少需要添加几个字符。if ( str[x] == str[y] ) dp[x][y] = dp[x+1][y-1];else dp[x][y] = min( dp[x][y-1], ... 阅读全文
posted @ 2012-07-27 21:50 冰鸮 阅读(200) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4562题目:给出一组数列和六种操作, 输出经过P次操作之后的数列。分析:因为P(1≤ P ≤ 109)很大,所以直接模拟会超时。也是看了解题报告之后才知道要用矩阵快速幂做。首先,把操作转化为矩阵乘法。因为 1×n 的矩阵乘以 n×n 的矩阵还是得到一个1×n 的矩阵,所以对数列的每一种操作都可以描述成一个n×n 的矩阵。然后再用矩阵快速幂得结果即可。快速幂模板:http://www.2cto.com/kf/201207/140 阅读全文
posted @ 2012-07-27 16:07 冰鸮 阅读(292) 评论(0) 推荐(0)