每个连通块单独考虑,分别黑白染色,取黑白中数量较小即可。
对于每个关卡,分成两类:
一类点直接拆散按从小到大排序选即可。
考虑枚举选一类点 i 个,则剩余 m-i 个点填二类点分 m-i 的奇偶性判断:
显然奇数情况记前/后缀最小/大值即可。
在一内向基环树森林上选若干点,使每个点必有一个儿子没选,求权值和最大。
表示当前点选/不选的最大值。
考虑非树边 x\rightarrow y,有两种情况:
两者取最大即可。
对于每个点,每种颜色,其单独答案贡献可转化为 n-siz_{x,c}。
其中 siz_{x,c} 代表从点 x 出发,不经过颜色 c 的点,所构成的连通块大小。
考虑对于所有 siz,均挂在深度最小的节点上,之后树上差分统计即可。
若碰到与当前颜色相同的点,之后该子树将失效,贡献更新。
注意根节点父亲颜色应设为“全彩”,特殊考虑即可。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有