A.HDU - 1520 Anniversary party
父亲结点和子结点不能同取
题意
给出一棵树 每个节点有权值 要求父节点和子节点不能同时取 求能够取得的最大值
思路
dp[now]0 表示不取当前结点
dp[now]1 表示取当前结点
1 |
|
B.POJ - 1655 Balancing Act
树的重心
题意
求某个点:以这个点为根结点的子树中顶点个数的最大值作为这个点的价值,那么找出价值最小的点,并且输出最小值,价值相等输出靠前的点。
题解
就是求树的重心。
树的重心:树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。
dp|now|[1]表示以p为根的子树节点个数(包括本身),dp[p]0]表示以p为balance node的最大子集个数。
1 |
|
C.HDU - 2196 Computer
给出一棵树,求离每个节点最远的点的距离
题解
可以知道 最远距离 肯定要么是当前结点到自己的叶子结点,或者当前结点到另一个其他结点的叶子结点
自己的叶子结点可以dfs递归求出
其他结点的递归结点可以通过自己父亲的最远结点距离得到,但是如果自己就是父亲的最远距离那就只能用次远距离了,所以要同时存储 最远子结点和次远子结点
1 |
|
D.UVA - 12186 Another Crisis
为了让信息传到i,需要的最少人数
题意
一个公司有1个老板和n个员工,n个员工中有普通员工和中级员工
现在进行一次投票,若中级员工管理的普通员工中有T%的人投票,则中级员工也投票并递交给上级员工
求最少需要多少个普通员工投票,投票才能到达老板处
题解
存子结点最少的人数,然后排序 再加起来
1 |
|
E.UVA - 1220 Party at Hali-Bula
父亲结点和子结点不同时取并且情况唯一
1 |
|
G.CodeForces - 461B Appleman and Tree
每个联通块中只有一个黑色的点
题意
给出一棵树,每个点是白色或者黑色,问有多少种方案能够通过去掉一些边使每个联通块中只有一个黑色的点。
题解
每个联通块只有 有黑点和没有黑点两个选择 设dp{i}[0/1]为以i为根 没有或者有黑点
初始化,如果有黑点设 dp{i}[1]=1,dp{i}[0]=0,否则反过来
设v是i的一个子树,
1.如果i要是黑的
1.1 v是黑的: 那么只能把V的这条边切掉;方案数是i当前为黑的方案数×v当前为黑的方案数
连接起来 方案数 i当前为白的方案数×v当前为黑的方案数
1.2 v是白的:那就只能i本身是黑才能连接 方案数是i当前为黑的方案数×v当前为白的方案数
2.如果i要是白的
2.1 v是黑的:那么只能选择切掉这条v 方案数是i当前为白的方案数×V当前为黑的方案数
2.2 V是白的: 那就只能选择连接这条V,方案数是i当前白的方案数×v当前为白的方案数
1 |
|
I.CodeForces - 161D Distance in Tree
长度为K的二元组个数
1 |
|
J.CodeForces - 767C Garland
把一个树切成三个权值相同的树
题解
一眼题,但是要注意不仅仅会切成三棵树,有可能切成多个树,所以cnt不能只是==3
1 |
|