【CF1842F】Tenzing and Tree

来源:博客园 时间:2023-06-27 21:17:57


(资料图)

题目

题目链接:https://codeforces.com/contest/1842/problem/F给定一棵 \(n\) 个点的树,你可以选择其中 \(k\) 个点染黑,定义一条边的价值为割去这条边之后,剩下两颗树的黑点数量差;一棵树的价值为所有边的价值之和。对于 \(k\in [0,n]\),求出树的价值的最大值。\(n\leq 5000\)。

思路

不妨设点 \(rt\) 为根,设 \(cnt[i]\) 表示以 \(i\) 为根的子树内的黑点数量。那么如果染 \(k\) 个黑点,答案就是

\[\sum^{}_{i\neq rt}\left |(k-cnt[i])-cnt[i]\right |=\sum^{}_{i\neq rt}\left |k-2\times cnt[i]\right |\]

这个绝对值很讨厌,但可以发现,如果点 \(rt\) 是所有黑点的重心的话,那么对于所有的 \(cnt[i]\ (i\neq rt)\),都一定满足 \(2\times cnt[i]\leq k\),此时答案就是

\[(n-1)\times k - 2\times \sum_{i\neq rt}cnt[i]\]

我们发现如果选择点 \(x\) 染黑,那么从 \(x\) 的父亲到 \(rt\) 上所有点的 \(cnt\) 都要加一。那么为了最大化答案,我们只需要选择深度最小的 \(k\) 个节点染黑即可。只需要枚举每一个点作为 \(rt\),然后 BFS 计算所有 \(k\) 的答案即可。即使目前枚举的点不是重心也没关系,因为这样就会导致有些 \(k-2\times cnt<0\),不会比最优答案大。时间复杂度 \(O(n^2)\)。

代码

#include using namespace std;const int N=5010;int n,dep[N],ans[N];vector e[N];queue q;int main(){scanf("%d",&n);for (int i=1,x,y;i

X 关闭

【CF1842F】Tenzing and Tree

题目题目链接:https: codeforces com contest 1842 problem F给定一

2023-06-27

胡锡进炒股首日赚104.78元 称以后会陆续加仓_当前简讯

知名媒体人、《环球时报》前总编辑胡锡进6月27日在微博上透露炒股首日

2023-06-27

《逆水寒手游》三端互通吗

逆水寒手游作为一款卖座的国产端游武侠风IP,该游戏支持移动端安卓、iO

2023-06-27

焦点热门:一起来捉妖专属猫上架以后什么时候能出售 专属猫出售条件介绍

下面小编就来为大家简单介绍下《一起来捉妖》专属猫的公示期是什么意思

2023-06-27

全球滚动:荒岛生存家什么时候出 公测上线时间预告

导读:最近很多玩家都在关注荒岛生存家这款手游,想知道具体的公测时间

2023-06-27

天黑了请闭眼官网在哪下载 最新官方下载安装地址

天黑了请闭眼怎么下载?想要比别人更加抢先抢快的玩到这款游戏,那么你

2023-06-27

《最终幻想16》最高输出连招推荐攻略

最终幻想16是一款因玩法独特而享誉全网的游戏,在这款游戏中,玩家想要

2023-06-27

《暗黑破坏神4》代价任务怎么做-当前关注

近日有一款游戏因其独特的玩法吸引了非常多的玩家,这款游戏就是暗黑破

2023-06-27

世界通讯!《迷你世界》2023年2月20日激活码

在迷你世界里面,玩家是可以使用激活码来兑换东西的,那么迷你世界里面

2023-06-27

环球讯息:《DNF》全职业名门猫咪套装时装效果一览

DNF全职业名门猫咪套装时装外观怎么样呢,DNF大和谐版本上线后会补偿给

2023-06-27