首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
BZOJ4033:[HAOI2015]树上染色——题解
】的更多相关文章
BZOJ4033 HAOI2015 树上染色 【树上背包】
BZOJ4033 HAOI2015 树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益. 问收益最大值是多少. Input 第一行两个整数N,K. 接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to). 输入保证所有点之间是联通的. N<=2000,0<=K<…
BZOJ 4033: [HAOI2015]树上染色题解
BZOJ 4033: [HAOI2015]树上染色题解(树形dp) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327400 原题地址: BZOJ 4033: [HAOI2015]树上染色题解 洛谷 P3177 [HAOI2015]树上染色 应该各大\(oj\)都有...可以多倍经验... 一眼树形\(dp\)是吧 因为要选出\(K\)个黑点,所以知道子树内有多少个黑点,就知道子树外有多少个黑点 那么设dp[now][j]表示在\(now\)的子树内…
[BZOJ4033][HAOI2015]树上染色(树形DP)
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2437 Solved: 1034[Submit][Status][Discuss] Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益. 问收益最大值是多少. Input 第一…
BZOJ4033: [HAOI2015]树上染色(树形DP)
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3461 Solved: 1473[Submit][Status][Discuss] Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益. 问收益最大值是多少. Input 第一…
[bzoj4033][HAOI2015]树上染色_树形dp
树上染色 bzoj-4033 HAOI-2015 题目大意:给定一棵n个点的树,让你在其中选出k个作为黑点,其余的是白点,收益为任意两个同色点之间距离的和.求最大收益. 注释:$1\le n\le 2000$ 想法:我们看到了数据范围...一般树上问题这个数据范围一般就是背包或者数据结构,这题我们考虑树上背包. 我们考虑枚举每一棵子树选取一些黑点的贡献.但是这样选取是有后效性的,因为内部点的选取可能在外面选取同样的点产生不一样的效果,所以我们尝试把后效性移除. 具体地:我们可以将边权下传到点权,…
BZOJ4033:[HAOI2015]树上染色——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4033 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益. 问收益最大值是多少. emmm……人傻自然 $~O(nk)->O(nk^2)~$ 参考:https://www.luogu.org/blog/mlystdcall/solution-…
【题解】 bzoj4033: [HAOI2015]树上染色* (动态规划)
bzoj4033,懒得复制,戳我戳我 Solution: 定义状态\(dp[i][j]\)表示\(i\)号节点为根节点的子树里面有\(j\)个黑色节点时最大的贡献值 然后我们要知道的就是子节点到根节点这条边会计算次数就是:子树中白色节点数\(*\)子树外白色节点数\(+\)子树中黑色节点数\(*\)子树外黑色节点数 \[dp[u][j+k]=max(dp[u][j+k],\] \[dp[u][j]+dp[v][k]+(1ll)*k*(m-k)*dis[v]+(1ll)*(siz[v]-k)*(n…
洛谷P3177||bzoj4033 [HAOI2015]树上染色
洛谷P3177 bzoj4033 根本不会做... 上网查了题解,发现只要在状态定义的时候就考虑每一条边全局的贡献就好了? 考虑边的贡献和修改状态定义我都想到了,然而并不能想到要结合起来 ans[i][j]表示i子树中选j个黑色节点,最大的贡献和 容易知道:每一条边的贡献为 长度*(边一侧的白点数*边另一侧的白点数+边一侧的黑点数*边另一侧的黑点数) 可以发现,如果已经确定一棵子树中选多少个黑点,那么这棵子树的根到其父亲的连边的贡献可以直接确定 考虑向一棵树的根节点(u)下再加入一棵子树(v)时…
[BZOJ4033]:[HAOI2015]树上染色(树上DP)
题目传送门 题目描述 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益.问收益最大值是多少. 输入格式 第一行两个整数N,K.接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to).输入保证所有点之间是联通的.N<=2000,0<=K<=N. 输出格式 输出一个正整数,表示收益的最大值. 样…
BZOJ4033 [HAOI2015]树上染色 【树形dp】
题目 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益. 问收益最大值是多少. 输入格式 第一行两个整数N,K. 接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to). 输入保证所有点之间是联通的. N<=2000,0<=K<=N 输出格式 输出一个正整数,表示收益的最大值. 输入样例…