树形Dp
Zhayan9QvQ
嘿嘿嘿
展开
-
【Bzoj1060】时态同步
题意给你一个n个结点的树。每条边上有一个权值,你可以给边加上权值,求最少要加上多少权值才能使根结点到每个叶子结点的权值相同。解析Dfs即可,每个结点的子结点都要加上其与最大子结点的差值。#include <cstdio>#include <cstring>#include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin)原创 2017-05-23 21:45:50 · 405 阅读 · 0 评论 -
没有上司的舞会
题意某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。解析经典题,dp[i][0]表示不选i时能取得的最大利益原创 2017-05-23 21:48:30 · 336 阅读 · 0 评论 -
【Bzoj3522】Hotel
题意有一个树形结构,每条边的长度相同,任意两个节点可以相互到达。选3个点。两两距离相等。有多少种方案?解析满足条件的点对一定是“有一个中心点,三个点到中心点的距离相等,且三个点分别在不同子树中”这种情况。(因为如果在同一子树中会被重复统计)。 那么枚举中心点,然后遍历子树,统计答案。 令cnt[i]表示当前子树中深度为i的点有多少个。 f[i]表示当前点已经遍历过的子树中,深度为i的点有多少个原创 2017-05-23 21:57:01 · 382 阅读 · 0 评论 -
【Bzoj4027】兔子与樱花
题意给一个n个结点的树,每个结点有最大载重m,上面有c[i]朵花,对于每个结点,它的儿子个数和花的朵数不能超过m。现在可以删掉一些结点,每删掉一个,它的花就会给父亲,求最多能删掉多少结点。解析树形Dp+贪心。 可以直接Dfs递归实现。 显然从权值小的开始删起。#include <cstdio>#include <vector>#include <algorithm>#define Rep(原创 2017-05-23 22:03:10 · 445 阅读 · 0 评论