![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状DP
hanhansoul
这个作者很懒,什么都没留下…
展开
-
poj1949 chores
/* * poj1949 AC 看起来像拓扑排序的DP * * 关键在于:工作k的前趋在1..k-1进行选择。 * 所以,理解题意可知,令工作i的结束时间为dp[i] * dp[i] = max(dp[j]|工作j为i的前趋)+t[i]; * * 但即使没有此条件,也可以将此题看作是一道树状DP。 * 将拓扑图反向,即将某工作的前趋作为该工作的儿子进行DP。 * 但我的树状DP原创 2012-07-15 18:11:28 · 868 阅读 · 0 评论 -
poj2378 Tree Cutting
/* * poj2378 AC * 一次水过。 * 简单的树状DP,先做一次dfs算出每个结点的子孙结点总数,包括自己,sum[i]。 * 再做dfs计算删去每个结点x是否满足条件,即满足: * 1) 每个结点的所有子结点i的sum[i]是否小于half。 * 2) 父结点方向上的结点总数,sum[1]-sum[x]是否小于half(1为树的根结点)。 * 若满足则为原创 2012-07-18 19:50:33 · 486 阅读 · 0 评论 -
poj2342 Anniversary party
/* * poj2342 AC * 典型的树状DP。 * dp[i][0]表示员工i参加舞会的最大值,dp[i][1]表示员工i不参加舞会的最大值。 * * dp[i][0] = max(dfs(son[i],1)); * i参加则i的儿子结点一定不能参加。 * dp[i][1] = max(dfs(son[i],0),dfs(son[i],1)); * i不参加则i的儿子结点可参原创 2012-07-19 13:12:18 · 745 阅读 · 0 评论