题解 [ARC093E] Bichrome Spanning Tree

萌萌题。

先将边按边权排序,求出最小生成树。

先考虑最小生成树权值为 X 的情况,严格来说是不更换最小生成树的边的情况,即保证最小生成树的边不全是同色即可,方案数为 (2n12)×2mn+1

接下来考虑更换最小生成树的边的情况,考虑什么时候最小生成树取不到,是不是最小生成树的所有边都染了同个颜色?因为可以染黑色或白色,答案要乘 2。不妨设其染成白色。

然后考虑有两种颜色的最小生成树,发现一个性质,即黑色边最多仅有一条,因为每次黑色边 (u,v) 的加入,要减去原最小生成树上的 uv 路径上最大边权,再加上 w(u,v),因为 (u,v) 本身不在最小生成树上,所以加入它肯定不优,于是只需一条黑边即可。

所以这个问题只需要对于每条不在树上的边,求一下加入它的最小生成树并判一下是否等于 X 即可。

按每条边加入后的最小生成树权值排序,对于排序后的非树边 (ui,vi),若加入它后的最小生成树权值为 X,其可以成为答案,但需保证前 i1 条边不能被染黑,否则异色最小生成树就不会是包含 (ui,vi) 的,所以方案数为 2×2mn+1i

时间复杂度 O(nlogn)

posted @   Terac  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示