`
huobengle
  • 浏览: 862132 次
文章分类
社区版块
存档分类
最新评论

POJ3345 - 树型DP....要细心啊....T_T..

 
阅读更多

这题卡了将近一天....感觉好没状态啊...开始的DP状态转移还搞错了...搞得自己头都大了...中午看了集《全开Girl》..眼泪都要哗哗了....再来敲...居然给过了....好吧...

题目的意思就是有N个城市...我需要M个城市支持..每个城市都有支持所需要的费用....有些城市有隶属关系...那只要将老大的钱给了..隶属的城市就自动过来了....题目中有说每个城市最多隶属一个城市...没有形成环的情况...所以这就是一棵树...呃...不对...只是一片森林...因为可能有N个根节点....但我们可以把森林上端加一个超级根..连向所有跟...这个森林就成了一棵树..建图应该不要太过考虑...差不多是赤果果的...

输入很恶心.....只能一次读一行再来判断...要转整型..要转string的...手动来...而且一个点的孩子有多少个也不给出...也要手动来计数下...我的input就写了无比的长...eegache..

主要问题是如何来DP... 感觉这个DP有一点背包的思想...dp [ h ] [ k ] 代表第 h 号点这课子树有 k 个城市拉拢了的最少代价... 那么...

dp [ h ] [ i+ a[p] ] = Min (dp [ h ] [ i ]+ dp [ p ] [ a[p] ] ) < p是其所有孩子节点..a[p]代表p这课子树的节点数 >

大致思想就是这样...写的时候要多多注意细节..譬如...每次更新dp[ h ] 时不要直接更新...这样会造成重复更新....可以先用一个数组temp来记录dp[ h ]的更新情况...更新完后再将temp的值赋给dp [ h ]...


Program:



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics