DP
文章平均质量分 75
Ac_Wind
这个作者很懒,什么都没留下…
展开
-
hdu2412 树形DP
个人做的第一道树形DP,很经典也很有代表性。 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2412 题目大致意思就是任意一个节点 i 不能与它的父亲节点 j 同时被取。问最多能去多少个节点。 对于每个节点显然有两种状态,要么取、要么不取,所以定义dp[ 0 ][ i ] 和 dp[ 1 ][ i ]分别代表不去 i 和 取 i 所原创 2014-03-01 14:34:19 · 581 阅读 · 0 评论 -
ZOJ3734 树形DP
很有意思的一道树形DP。关键在于变量的设置。根据翻转的性质,我们设dp[ i ][ 0 ]代表以 i 为根的子树like 比 candle多多少,dp[ i ][ 1 ]则表示以 i 为根的子树like 比 candle少多少。所以每次翻转都是dp[ i ][ 0 ]和dp[ i ][ 1 ]的转换。很有意思! #include "iostream" #include "cstdio" #i原创 2014-03-01 16:00:37 · 1237 阅读 · 0 评论 -
hdu3593 树形背包
根据题意我们可以判断出很明显是一个树形的DP,但是从何入手呢。 显然我们还是可以按照对于某一个点分取和不取两种状态,那么由于闲置费用的引入我们很容易就想到了背包问题(体积限制)。我们不妨假设0为根节点。显然对于每一个非叶子节点 i 以他为根的子树在费用dp[ i ][ v ]的最大收益就可以通过其儿子节点来求:如果他的儿子是个叶子节点,那么要么取要么不取,就是0、1背包的问题了;如果儿子不是原创 2014-03-02 00:05:49 · 1344 阅读 · 0 评论 -
poj1947 树形DP
应该是属于偏简单的一类树形DP了。思路很明确,dp[ i ][ n ]表示以i为根节点的子树中取n个点的子树所需的最小代价(所需删的边数)。那么对于一个节点 i 有dp[ i ][ 1 ] = 0,那么对于其儿子节点 j 就有大致两种情况了:①根本不取 j 子树上的,此时代价为dp[ i ][ n ]+1(即删除 i 到 j 的这条边);②取 j 子树上的 k 个节点那么代价就是dp[ i ][原创 2014-03-02 23:03:33 · 777 阅读 · 0 评论 -
HDU2224 TSP(货郎担)问题DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2224 很经典的TSP一类问题了:给出平面上的N个点(1~N),让你从 1 号点出发走到最右端的点 N ,再返回 1 ,要求中途不能重复走某个点而且必须把所有点全走一遍,求最小的总路径。 我们大致可以这样想:把折返问题拆分成两次从 1 到 N 的路径当然还得满足题目要求(中途不能重复走某个点而且必须原创 2014-03-03 17:21:15 · 2060 阅读 · 0 评论 -
hdu2196 Computers 树形DP
这题自己没想出来,,连续做了几天的树形DP结果反而思路被限制了,现在想来这题其实不难= =!主要是既要存 i 到叶子的最大值以及取得这个最大值的关联儿子节点,还要存取得次大的值这些信息。因为最后扩展到全部节点的时候可能出现 j 的父亲节点 i 恰好是 i 取得max的关联儿子节点,这样状态就无法转移了,于是我们就需要一个次大值的信息来解决这种问题。(最大与次大严格不重复)接下来就很简单了 #in原创 2014-03-05 20:00:50 · 799 阅读 · 0 评论