
ACM_动态规划
文章平均质量分 81
京城一十三
你在凝视深渊的时候 深渊也在凝视着你
展开
-
hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地
题意: 郑厂长系列故事——排兵布阵Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1883 Accepted Submission(s): 686Problem原创 2014-10-04 16:58:55 · 960 阅读 · 0 评论 -
hdu2167 方格取数 状态压缩dp
题意: 方格取数,八个方向的限制。思路: 八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看代码。原创 2014-10-03 14:11:06 · 689 阅读 · 0 评论 -
hdu3182 状态压缩dp
题意: 一个人做汉堡包,每个汉堡包有自己的花费和价值,某些汉堡包必须是在其他的某些汉堡包已经做好了的前提下才能制作,给你这个人的初始钱数,问最大的价值是多少。思路: 比较简单的一个题目,首先我们开一个数组dp[i]表示i状态(状态压缩)时的最大价值,把每一个状态都用这n个汉堡包更新一下,还的开个数组money[i]表示的是i状态是的剩余钱数,更新的时候记住一原创 2014-10-02 20:44:10 · 856 阅读 · 0 评论 -
hdu1074 状态压缩dp+记录方案
题意: 给你一些作业,每个作业有自己的结束时间和花费时间,如果超过结束时间完成,一天扣一分,问你把n个作业完成最少的扣分,要求输出方案。思路: 状态压缩dp,记录方案数的地方我用的是类似并查集的方法,记录当前状态是那个状态转移过来的,,对于字典序最小,这个比较好处理,给的是升序的,所以直接更新的时候记录就行了,,我是开了一个dp[i]表示i状态时的最小扣分,原创 2014-10-02 19:37:50 · 618 阅读 · 0 评论 -
hdu3449 有依赖的背包问题
题意: 给你一些物品,每个物品有自己的价值和花费,每个物品都对应一个箱子,每个箱子有价钱,买这个物品必须买相应的箱子,给你一个价钱,问最多可以获得多少价值。思路: 典型的有依赖的背包,每个箱子是“主件” 每个箱子所对应的物品是他的“附件”,有依赖的背包的过程就是把没一组主件和附件的集合中附件跑一遍01背包,然后把主件强加到跑完后的数组里,然后再在虽有的集原创 2014-10-02 16:08:45 · 1880 阅读 · 1 评论 -
hdu1561 树形dp
题意: 给你n个东西,每个东西有自己的价值,让你从里面最多取出m个物品,问最大的价值,有的物品有限制,就是必须先取出某个物品后才能取出这个物品。思路: 树形dp,应该是树形的01背包吧,自己dp太渣了,看题解看了好久才懂,我对于树形dp的理解目前是 树形第dp就是用树的节点关系,来约束dp更新是的顺序,比如必须更新完子节点原创 2014-10-02 14:17:40 · 492 阅读 · 0 评论 -
POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)
题意: 给你一个无向图,然后给了一个起点s和终点e,然后问从s到e的最短路是多少,中途有一个限制,那就是必须走k条边,路径可以反复走。思路: 感觉很赞的一个题目,据说证明是什么国家队集训队论文什么的,自己没去看那个论文,就说下我自己的理解吧,对于这个题目,我们首先分析下Floyd,那个算法的过程中是在更新的dis[i][j]上再更新,再更新。。。,是想一下,我们原创 2014-09-28 19:44:14 · 906 阅读 · 0 评论 -
hdu2155 小黑的镇魂曲(dp)
题意: 小黑的镇魂曲Problem Description这个事情发生在某一天,当小黑和SSJ正在约会的时候,邪恶的Guner抓走了SSJ,小黑伤心万分,怒不可遏啊!但是他显然也是没有办法的,谁叫Guner比小黑邪恶,小黑打不过Guner呢!于是,小黑利用皮肤保护色,趁夜摸黑前往Guner的城堡,原创 2014-09-12 21:15:23 · 1464 阅读 · 0 评论 -
hdu4975 行列和构造矩阵(dp判断唯一性)
题意: 和hdu4888一样,只不过是数据加强了,就是给你行列的和,让你构造一个矩阵,然后判断矩阵是否唯一。思路: 构造矩阵很简单,跑一次最大流就行了,关键是判断矩阵的唯一性,之前的那个4888我用的是深搜找环过的,这个题目就TLE了,数据加强了,对于判断矩阵的唯一性我们可以这么想假如某一行的i列和j列满足 i列的这个原创 2014-08-24 12:52:00 · 644 阅读 · 0 评论 -
hdu4901 枚举状态(找集合对S(xor) ==T(and))
题意: 给你一个串数字,然后让你在这里面挑取两个集合S ,T,集合的要求是(1)不能为空(2)S集合的所有元素必须在T集合的左边(3)S集合的XOR == T集合的AND 问可以找到多少组这样的集合对。思路: 两种方法,一个是枚举T集合的第一个元素,或者是枚举S集合的最后一个元素,首先我们开四个数组sum_xor[1002]原创 2014-08-12 13:58:31 · 488 阅读 · 0 评论 -
hdu4907 水dp 或者set
题意: 给你一些被占用的时间点,然后有一些询问,每次输出大于等于询问时间的没被占用的最小的那个时间。思路: 直接把所有用过的时间标记上,然后倒着更新一遍当前最小空余时间,或者用set做,两个都在下面写代码了,水题不解释了,直接看看代码就懂了。原创 2014-08-06 00:05:15 · 564 阅读 · 0 评论 -
hdu4846 最大子正方形(dp)
题意: 给你一个图,让你找到最大的子矩形。思路: 之前做过一个最大子矩阵,记得当时是用三种方法做的,两种都是瓶颈法,第三种是dp,结果今天的用瓶颈吧怎么都过不去,哎!不知道为什么,后来没办法有写了和dp顺利ac了,我们求最大子矩阵的时候是记录最大的长*宽,这次只要记录最大的min(长,宽),就行了,说下这个题目的dp做法吧,只要是原创 2014-07-23 12:38:35 · 1018 阅读 · 0 评论 -
bfs+状态压缩dp
题意: 给你一个地图,问你吧所有的隧道都走完的最小费用,起点不固定,穿越隧道的时间不计,在隧道外边每移动一步花费一秒。思路: 先bfs求出所有dis[i][j](i的终点和j的起点的距离),然后在dp[i][j],i表示当前状态(二进制压缩后的状态)j表示第几个点,则更新的方程也很简单dp[i|(1做过很多,但之前的数据都很小,可以直接n!,写个原创 2014-07-21 21:03:25 · 550 阅读 · 0 评论