专栏文章
CF2152H2 Victorious Coloring (Hard Version)
CF2152H2题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minnlput
- 此快照首次捕获于
- 2025/12/02 05:20 3 个月前
- 此快照最后确认于
- 2025/12/02 05:20 3 个月前
先考虑已知 怎么求 。设 为 头上的边,朴素的想法是直接 dp,,然后对 取 ,但是这个做法无法优化,故舍去。
先对原图找一点性质:对于最小的连通块,不存在一条内部到外部的边 比内部任意一条边的 大,否则可以让内部那条 的 作为内部到外部的边。所以从大往小加边,那么就只有每次加完边的连通块和一开始的孤点可能成为 。
考虑求答案,设 为联通块 的内部到外部边权和, 为 内部的 之和,显然要有 。
容易发现,上面的连通块可以通过 kruskal 重构树来表示,每个连通块就是一个子树,那么就有 。
考虑直接维护 为关于 的一个函数。
-
对于叶子节点, 为一段 后加上一条斜率为 的直线,显然是凸的。
-
对于非叶子节点, 可以表示为两个凸函数之和和一个凸函数取 max,还是凸的。
用 slope trick 维护这个凸函数,合并两个子树的时候直接把两个堆 merge,取 max 的时候只用看最小的若干个点被一条斜率为 的直线弹掉即可,每次只会加 个点。
所以复杂度为 或 ,取决于是否使用可并堆。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...