![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形dp
crazy__C
这个作者很懒,什么都没留下…
展开
-
Party at Hali-Bula
Party at Hali-Bula原创 2015-04-01 00:35:59 · 483 阅读 · 0 评论 -
zoj cut the tree(树形dp,小细节真的很多)
这道题做的我很是头痛,好不容易思路有了结果调了好几个小时也没调对,太弱,最后是找了份题解“对照”人家代码改的才过,索性把他的思路也直接粘过来了。 一看便知是树形dp,dp[i][j]-表示以节点 i 为根的树砍 j 次得到的最小权值,不过这题难就难在dp[u][0]有双重含义。 1.自己的初始权值。(便于转移) 2.以u为根的树砍 0 次得到的最小权值。 这样直接采取 dp[u][原创 2015-04-01 18:48:36 · 522 阅读 · 0 评论 -
poj 1155 TELE(树形泛化背包dp)
/* 这道题还不错,自己想出了思路过得也比较快,也得出了一个小经验,以后写这种题先把关键部分伪代码写出来这样会快很多而且 不那么容易出错,省去很多的调试时间 这道题就是转化为一道树形背包问题。首先把需要付的钱转为负数,对每个叶子结点增加一个子节点表示赚的钱,为正数. 然后记录下当前结点的所有可能的用户数目所花费的钱.所以问题就转化为一道简单的树形dp问题。最原创 2015-04-06 00:15:10 · 1456 阅读 · 0 评论 -
poj 2486 Apple Tree(树形dp)
/* 说一下做题感受,首先一看就可以确定是一道树形背包问题。 刚开始想的是两个状态来表示(rt,i),但这样的话不好表示从一个子节点回来再去访问另外子结点的情况, 所以就想到了三个状态(rt,i,0)和(rt,i,1),分别表示是否回到rt结点的最大值,这样就可以写出状态方程: (rt,i,0)=max{(rt,i,0),(s,j,0)+(rt,i-2-j,原创 2015-04-05 22:26:04 · 531 阅读 · 0 评论