动态规划
文章平均质量分 64
萌萌哒黑大帅
这个作者很懒,什么都没留下…
展开
-
uva 10405 Longest Common Subsequence
题目大意:求出两个给定字符串的最大上升子序列 解题思路:状态转移方程,如果a[i-1] = b[i-1],那么dp[i][j] = dp[i-1][j-1]+1,否则dp[i][j] = max(dp[i-1][j],dp[i][j-1]),在dp前记得初始化dp[i][0]与dp[0][j]为0,递推计算从1到字符串长度 题目坑点:字符串可能包含空格,需要用getline输入 代码如下:原创 2015-08-20 00:26:26 · 337 阅读 · 0 评论 -
uva 103 Stacking Boxes
题目大意:多维方形嵌套问题,要求输出最大的个数以及任意一组可嵌套的方形 题目思路:参考两维的矩形嵌套问题 题目坑点:无 参考代码: #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2015-08-19 23:52:31 · 332 阅读 · 0 评论 -
hdoj 1028
题目大意:求出将给定数字分成若干正整数的不同方法个数 题目分析:该题可等价转化为硬币转化问题:有各种正整数面值的硬币,求出给定钱数的不同组合方式的个数,定义dp(x,y)为能组成x元的,且最大面值为coin[y]的不同组合方式。状态转移方程为:dp(x,y) = dp(x-coin[y],y)+dp(x,y-1); 则答案只需要从最大的y开始往前扫,第一个不为零的dp(x,y)即为答案。原创 2015-08-21 15:25:57 · 798 阅读 · 0 评论 -
codeforces #38E
题意:有n个弹珠分别位于x轴上的一些位置,你可以选择其中的一些固定住(需要花费ci),当选择完毕之后,从最右面开始,弹珠会依次向左滚动直到遇到被固定住的弹珠(否则视为滚到无穷远处),计算花费+所有弹珠滚动的距离之和的最小值 思路:使用动态规划,首先最左边的弹珠肯定是要被固定住的,接着从左向右考虑每一个弹珠,固定每一个弹珠的花费都是可以直接得到的(花费-右边所有弹珠的个数*该弹珠到它右边相邻的一个原创 2015-10-25 23:36:20 · 523 阅读 · 0 评论 -
codeforces #39E
题目大意:有两个人玩游戏,每次对a或b进行加1的操作,使得a^b 解题思路:博弈类型动态规划,这里采用的是记忆化搜索,没有接触过此类问题的可以先做一下UVAOJ的10404,题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1345 在此题原创 2015-10-26 00:01:43 · 725 阅读 · 0 评论 -
codeforces #35D
题目大意:农场中原来有X份粮食,每天会有一个动物来,每个动物会在第i天消耗i份粮食,你可以选择接受或者拒绝,求最后能容纳的最多动物数。 题目思路:每个动物消耗的粮食都是定值。。。所以可以直接安装消耗的粮食数进行排序,或者0-1背包处理均可 AC代码: #include #include using namespace std; ifstream fin; ofstream fout;原创 2015-10-25 23:43:39 · 459 阅读 · 0 评论