![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Cifer
这个作者很懒,什么都没留下…
展开
-
POJ 1014 Dividing (多重背包)
题目链接:.........题目大意:有6种价值的大理石(为1~6), 先给出每种价值的大理石若干, 求能不能将它们平分。思路:背包9讲中的模板套着打就ok了, dp[j]表示重量为j时的价值, 这里重量等于价值。 这题和上一道题很像(.........), 也可以用f[j]记录重量为j时是否出现过。code:#include #原创 2012-07-16 15:29:39 · 779 阅读 · 0 评论 -
HDOJ 2159 FATE (二维背包)
题目链接:(—_—) zZ思路:根据背包9讲的二维背包问题。摘自背包九讲:问题二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和b[i]。两种代价可付出的最大值(两种背包容原创 2012-07-24 15:02:52 · 721 阅读 · 0 评论 -
HDOJ 3496 Watch The Movie (二维背包)
题目链接:(—_—) zZ题目大意:小明想要买n张碟子来看, 但商店只卖m张(m思路:简单的二维费用背包问题, dp[j][k]表示时间为j内, 看k张碟子得到的最大价值。dp[j][k] = max(dp[j][k], dp[j-time[i]][k-1]+value[i])code:#include #include int main(){原创 2012-07-24 22:24:02 · 1301 阅读 · 0 评论 -
POJ 3181 Dollar Dayz
题目链接:(—_—) zZ题目大意:long long ago 有一个商店, 它里面卖的东西价格为[1¥...k¥]区间内的, 每种价格的物品都有无限件, 现有n元,要求花完这n元买物品, 求出能买物品搭配方式的总数思路:这题是在背包问题里面的题, 不过不会做, 参考了大牛的思路code:#include #include #define inf 1原创 2012-07-26 09:31:57 · 1052 阅读 · 0 评论 -
POJ 2063 Investment
题目链接:(—_—) zZ题目大意:现在又一笔钱, 要买bond,买一个bond要花费一定的钱和这个bond一年结束后可以得到的分红。每年都是根据上一年最终得到的钱重新买bond,现在要求n年后使最初的那笔钱得到的增长最大。思路: 完全背包。code:#include #include int value[12], interest[12], dp[100原创 2012-07-25 15:57:46 · 438 阅读 · 0 评论 -
POJ 1787 Charlie's Change
题目链接:(—_—) zZ题目大意:有面值为1分,5分, 10分,25分的面值的硬币, 现在现在要买价格为p分的咖啡,要求求出给出的硬币数最多且和为p分的方案。思路:dp[i][j] = max(dp[i-1][j], dp[i][j-coin[i]]), dp[i][j] 表示用第i种硬币凑成j分的用了多少硬币数code:#include #incl原创 2012-07-26 14:43:05 · 1076 阅读 · 1 评论 -
POJ 2923 Relocation (状态压缩 0-1背包)
题目链接:(—_—) zZ题目大意:有n个物品用2个车来运输, 每个物品有一定的重量, 每个车能承受一定的重量, 现在要求用车把物品从老房子运输到新房子, 问至少要运多少趟Ps:我太弱了, 不会状态压缩, 第一回乱搞超时,看了大牛的状态压缩,哦了code:#include #include #define min(a, b) a>b? b:aint n原创 2012-07-31 19:52:12 · 898 阅读 · 0 评论 -
HDOJ 1561 The more, The Better (树形DP)
Problem DescriptionACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗? Input每个测试实例首先包括2个整数,N,M.(1 = 0。当原创 2012-08-29 19:04:48 · 609 阅读 · 0 评论 -
HDOJ 1069 Monkey and Banana
~~~题目链接~~~题目大意:有个个猴子,现在给它n种不同类型的方块,每种方块不限个数, 要求让它把这些方块堆积起来, 在上面的方块的长和宽要小于下面方块的长和宽,要求求出能堆的最大高度.思路:对矩形进行统一的摆放,长的边为长, 短的边为宽。也就是说x>=y。 然后按矩形的长宽进行排序(也可以是用面积),就变成了子序列最大和问题了,high[i]表示以第i个矩形为最上面的矩原创 2012-08-26 21:50:08 · 575 阅读 · 0 评论 -
CF 4D Mysterious Present
~~~题目链接~~~题目大意:先给出一张卡片的长和宽, 现在有n张信封, 每张信封都有一定的长和宽, 现在要求从这些信封中选出最多信封, 从左到右排列, 右边的信封的长宽都分别大于左边的, 且卡片能装入最左边的信封中。思路:对信封排个序后, 转化为求最长单调递增子序列。 和HDOJ 1069思路相差不多code:#include #include #原创 2012-10-19 18:09:25 · 458 阅读 · 0 评论 -
HDOJ 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
题目链接:.........Ps:刷水, 背包水题哇卡卡, 赤裸裸的多重背包直接模版........code:#include #include int n = 0, m = 0, dp[102];void zero_one(int value, int weight){ int j = 0; for(j = n; j>=value; j-原创 2012-07-16 15:57:23 · 1259 阅读 · 0 评论 -
POJ 1088 滑雪
~~~题目链接~~~题目大意:给出一个n*m的矩阵, 要求求它的最大递减序列的长度, 序列的路径为在矩阵中连续的一条路线思路:记忆化搜索, DP#include #include using namespace std;int n = 0, m = 0, map[102][102], num[102][102];int cur = 0,原创 2012-11-30 18:59:14 · 474 阅读 · 0 评论 -
POJ 3211 Washing Clothes
题目链接:(—_—) zZ题目大意:有一男一女一起洗衣服, 衣服有不同的颜色和洗每件衣服要花一定的时间, 为了不让衣服染色洗的时候2人只能洗完1种颜色的才能洗下一种,要求求出洗完2人洗完衣服的最短时间。思路:这题可以根据POJ 1014得出思路,对于每种颜色洗它都有一个总时间,要求洗这种颜色的最少时间,就是求看能不能一个人洗这种颜色的衣服达到总时间的一半。原创 2012-07-25 12:47:15 · 460 阅读 · 0 评论 -
ACM HDOJ 汉诺塔II
汉诺塔IIhttp://acm.hdu.edu.cn/showproblem.php?pid=1207Problem Description经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在原创 2011-12-03 13:51:47 · 3349 阅读 · 2 评论 -
POJ 1742 Coins (背包)
题目链接:.........题目大意:给出n种面值的硬币, 和这些硬币每一种的数量, 要求求出能组成的钱数(小于等于m)Ps:用多重背包的方法做在poj上超时了(hdoj行), 然后在网上看到一个方法, 用f[j]表示能组成这价值为j的钱和不能(0与1), 用used[j]表示当前这种面值为j时用了A[i]多少次。code:#include #include原创 2012-07-16 13:47:43 · 594 阅读 · 0 评论 -
POJ 1384 Piggy-Bank (完全背包)
题目链接:。。。。。。。。。题目大意:给出n种面值的硬币,每种面值的硬币有一定的重量, 给出存钱罐的净重和存钱罐装满的重量, 要求求出存钱罐里最少有多少钱完全背包求解code:#include #include int main(){ int i = 0, j = 0, t = 0, e = 0, f = 0, n = 0, p[502], w[原创 2012-07-14 19:19:22 · 536 阅读 · 0 评论 -
HDOJ 2602 Bone Collector(0-1背包)
题目链接:。。。。。。。。。新手第一道0-1背包问题动态方程:dp[j] = max(dp[j], dp[j-V[i]]+W[i]) j为容量, 最后的dp[v]就为求的答案。code:#include #include int main(){ int i = 0, j = 0, t = 0, n = 0, v = 0; int W[100原创 2012-07-09 22:05:54 · 707 阅读 · 0 评论 -
HDOJ 1712 ACboy needs your help (分组背包)
题目链接:。。。。。。。。。题目大意:有n门功课用A[i][j]表示第i门功课花j天完成得到的profit, 给出m天, 要求在m天内得到的最大profit状态方程:dp[j] = max(dp[j], dp[j-k]+A[i][k])code:#include #include int main(){ int i = 0, j = 0,原创 2012-07-14 13:18:11 · 408 阅读 · 0 评论 -
HDOJ 1074 Doing Homework (状态压缩)
题目链接:。。。。。。。。。题目大意:给出每项作业, 有它的截止时间和完成它要花的时间, 如果在截止时间后完成, 要扣学分, 让找出最佳的做作业顺序,使扣得学分最少。思路:状态压缩,用2进制表示作业的完成情况, 0代表未完成, 1代表完成,共有n个作业, 那么所有作业完成的情况就是2的n次方减1code:#include #include struc原创 2012-07-08 17:41:56 · 582 阅读 · 0 评论 -
Ural 1018 Binary Apple Tree (树形DP)
题目链接:(—_—) zZ题目大意: 有一棵苹果树,苹果树的是一棵二叉树,共N个节点,树节点编号为1~N,编号为1的节点为树根,边可理解为树的分枝,每个分支都长着若干个苹果,现在要要求减去若干个分支,保留M个分支,要求这M个分支的苹果数量最多。思路:树形DP, dp[i][j]表示根节点为i时有j条边时的苹果数, 选取左子树和右子树有2种情况 1:j条边全部在左子原创 2012-08-01 17:31:45 · 646 阅读 · 0 评论 -
HDOJ 2639 Bone Collector II (背包求第k大)
题目链接:(—_—) zZ题目大意: 有n个骨头, 和一个容量为v的背包, 现在给出每个骨头的重量和价值, 求在容量为v的背包中能装的第k大的价值。思路:dp[j][k]表示容量为j时第k大的价值。code:#include #include #include int a[32], b[32], w[122], V[122], dp[122][32原创 2012-07-31 15:11:51 · 459 阅读 · 0 评论 -
POJ 3624 Charm Bracelet (0-1背包)
题目链接:(—_—) zZ题目大意:有n个手镯, 每个手镯有一定的重量和让Bessie高兴的程度, 现在Bessie最多带重量不超过m的手镯, 求该怎样选取手镯使Bessie最高兴.思路:简单的0-1背包问题code:#include #include #define max(a, b) a>b? a:bint w[3600], d[3600],原创 2012-07-31 20:40:41 · 584 阅读 · 0 评论 -
POJ 1276 Cash Machine (多重背包)
题目链接:(—_—) zZ题目大意:就是有不同面值的票单D1,每种面值的票单有ni个, 现在给出一个钱数N, 要求求出这些票单能组成的最大面值(小于或等于钱数).思路:多重背包code:#include #include int N[12], D[12], dp[100010], num[100010];int main(){ int i =原创 2012-07-31 20:26:02 · 388 阅读 · 0 评论 -
POJ 2392 Space Elevator (多重背包)
题目链接:(—_—) zZ题目大意:The cows are going to space(吐槽:牛要上太空?这真的牛逼),现在奶牛要搭建一个上太空的电梯, 用的是高科技材料板砖,每个板砖有一定的高度,和它最高能堆积在a_i高度处,现在给出k个板砖的信息(每个砖的高度, 所能在的最大高度, 和个数), 求能堆积出的电梯最大高度.思路:多重背包问题, 把板砖的所在最大高度原创 2012-07-31 20:04:22 · 496 阅读 · 0 评论 -
HDOJ 3535 AreYouBusy (背包 每组至少一个)
题目链接:(—_—) zZ题目大意:有n种工作的集合, 每种集合有一种类型, 0为最少在这个集合中选一个工作, 1为最多在这个集合中选一个工作, 2为随便选, 做每个工作要花一定的时间和得到一定的幸福度, 求在t时间内获得的最大幸福度思路:类型为0时是分组背包的变形 , 为1时就是分组背包, 为2是为0-1背包,分别根据背包类型求出就可Ps:无限wacode原创 2012-07-28 22:01:00 · 505 阅读 · 0 评论 -
POJ 1050 To the Max
~~~题目链接~~~题目大意:现给出一个矩阵, 现在求这个矩阵中子矩阵最大和是多少思路:子矩阵是连续的一块, 可以把它看成一个整体, 如矩阵第1第2行相加合并后成为单独的一行, 对这行求最大连续和就是求这2行矩阵的子矩阵和最大code:#include #include #define inf -0x7fffffffusing namespace原创 2012-11-30 19:07:48 · 445 阅读 · 0 评论