树状dp
文章平均质量分 77
谢符宝
业精于勤,荒于嬉行成于思,毁于随。
展开
-
poj3140(经典-树的dp)
题意:一棵树,每个节点都有一个正的权值,将树剪断一条边,分成两棵树并使得两棵树的权值和之差的绝对值最小。求最小之差。 解法:记忆化dfs一遍,即枚举剪断每条边的情况,复杂度是O(n). 代码:/**************************************************** * author:xiefubao ******************************原创 2014-04-08 01:08:59 · 1014 阅读 · 0 评论 -
hdu4118(树形DP)
题意:给一棵树(每个节点是一个城市),每个节点上有一个人。每个人都要到另外一个城市,并且每个城市最后只能有一个人。问全局所有人旅行的最长的长度可以是多少。 解法:一定可以构造一种这样的情形:对于每条边,使得少的一边的所有人都到另一边去。这样就实现了每条边的最大化利用。一定是最优解。 代码: /**********************************************原创 2014-05-21 17:37:36 · 1262 阅读 · 0 评论 -
poj2152(Fire) 树形DP
题目链接:http://poj.org/problem?id=2152 题意:一棵带边权的树,边权表示节点间距离,在i上建立消防站的代价是w[i],如果在一点i没建消防站,那么它与距离这个点最近的消防站之间的距离不能大于d[i]。问满足建站最小的花费; 解法;看了陈启峰的论文才会的,感觉挺难的,不过论文里分情况讨论了,应该不需要;dp[i][j]表示在i处选择j处作为供应站(但是并不一原创 2014-06-26 11:12:54 · 971 阅读 · 0 评论 -
zoj3734
题意:一棵有根树,每个节点都有一个value值和属性(LICK或是 CANDLE)。你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性。有些点反转消耗代价为X,有些为Y。你的目标的是使得LICK的value和最大。 解法:13年长沙区域赛一道题,感情当时都没有做到这道题。状态ans[i][0/1]分别表示此点的子树LICK最多能比CANDLE多多少和少多少的值。状态转移见代码原创 2014-11-05 14:09:51 · 847 阅读 · 0 评论