2013年8月13日

POJ1159 - Palindrome(区间DP)

摘要: 题目大意 给定一个字符串S,问最少插入多少个字符可以使字符串S变为回文串 题解 用dp[i][j]表示把字符串s[i…j]变为回文串需要插入的最小字符数 如果s[i]==s[j]那么dp[i][j]=dp[i+1][j-1] 如果s[i]!=s[j]那么dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1 可以用滚动数组优化一下空间 代码: #include#include#... 阅读全文

posted @ 2013-08-13 21:37 仗剑奔走天涯 阅读(348) 评论(0) 推荐(0) 编辑

POJ2229 - Sumsets(完全背包)

摘要: 题目大意 给定一个数N,问由不同的2的幂之和能组成N的方法有多少种 题解 看完题目立马想到完全背包。。。敲完代码上去超时了。。。。后来发现是%的原因。。。改成减法就A了。。。%也太他妈耗时了吧!!!(还有一种O(n)的算法。。。) 代码: #include#include#define MOD 1000000000#define MAXN 1000005int dp[MAXN];int main(... 阅读全文

posted @ 2013-08-13 21:31 仗剑奔走天涯 阅读(338) 评论(0) 推荐(0) 编辑

POJ2250 - Compromise(LCS+打印路径)

摘要: 题目大意 给定两段文本,问公共单词有多少个 题解 裸LCS。。。 代码: #include#includeusing namespace std;#define MAXN 105string x[MAXN],y[MAXN];int path[MAXN][MAXN],dp[MAXN][MAXN];int n,m;void work(){ for(int i=1; i>s) { ... 阅读全文

posted @ 2013-08-13 21:25 仗剑奔走天涯 阅读(208) 评论(0) 推荐(0) 编辑

POJ1873 - Balance(01背包)

摘要: 题目大意 现有一个天平,它有C个挂钩和G个砝码,问有多少种方法可以使得天平平衡(砝码必须用完) 题解 其实就是让背包容量为0的方法有多少种方法,但是这样的话背包容量会出现负数,所以可以平移一下,背包容量最大值为20*25*15=7500,即平移量为7500,最后答案就是dp[G][7500] 代码: #include#include#includeusing namespace std;#defi... 阅读全文

posted @ 2013-08-13 21:17 仗剑奔走天涯 阅读(212) 评论(0) 推荐(0) 编辑

POJ3356 – AGTC(区间DP&&编辑距离)

摘要: 题目大意给定字符串X和Y,可以对字符串进行一下三种操作:1、删除一个字符2、插入一个字符3、替换一个字符每个操作代价是1,问运用以上三种操作把X变为Y所需的最小步数是多少?题解定义dp[i][j]为把X的前i个字符转换为Y的前j个字符所需的最小步数如果X[i]==Y[j]则dp[i][j]=dp[i-1][j-1]如果X[i]!=Y[j]则dp[i][j]=min(dp[i-1][j-1]+1,dp[i-1][j]+1,dp[i][j-1]+1)代码:#include#include#includeusing namespace std;#define MAXN 1005char x[MAXN 阅读全文

posted @ 2013-08-13 21:02 仗剑奔走天涯 阅读(236) 评论(0) 推荐(0) 编辑

POJ1836 - Alignment(LIS)

摘要: 题目大意 一队士兵排成一条直线,问最少出队几个士兵,使得队里的每个士兵都可以看到又端点或者左端点 题解 从左往右搞一遍LIS,然后从右往左搞一遍LIS,然后枚举即可。。。 代码: #include#include#include#includeusing namespace std;#define MAXN 1005double a[MAXN];int d[MAXN],c[MAXN];int ma... 阅读全文

posted @ 2013-08-13 20:32 仗剑奔走天涯 阅读(831) 评论(0) 推荐(0) 编辑

POJ3280 - Cheapest Palindrome(区间DP)

摘要: 题目大意 给定一个字符串,要求你通过插入和删除操作把它变为回文串,对于每个字符的插入和删除都有一个花费,问你把字符串变为回文串最少需要多少花费 题解 看懂题立马YY了个方程,敲完就交了,然后就A了,爽歪歪,哈哈~~~ dp[i][j]表示把s[i..j]变为回文的最小花费,设cost[0][ch-‘a’]和cost[1][ch-‘a’]分别为插入字符ch和删除字符ch的花费 如果s[i]==s[j... 阅读全文

posted @ 2013-08-13 20:16 仗剑奔走天涯 阅读(214) 评论(0) 推荐(0) 编辑

导航