专栏文章
CF1935
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio0ep7d
- 此快照首次捕获于
- 2025/12/02 11:19 3 个月前
- 此快照最后确认于
- 2025/12/02 11:19 3 个月前
CF1935
E
Solution
首先考虑每一对 ,将其二进制分解。
其中 和 的公共前缀一定会对答案产生贡献,这部分可以用 st 表维护区间 or,计为 。
对于剩下的部分,考虑 的第 位为 ,由于 or 的性质,我们可以对 的每一位分别考虑其贡献 还是 。
从高位到低位贪心,设 表示询问区间内有多少个 的第 位为 且不在与 公共前缀内,若 的第 位为 ,则令 额外加上 。
-
,此时令一个贡献 ,一个贡献 ,得到答案。
-
,贡献 最优。
-
,无法产生贡献。
可以用前缀和维护,时间复杂度 。
F
Solution
对于第 个点,所加的边一定是度数减 条。
我们一定是尽可能加代价为 的边,定义 为与 相连的连通块内编号最大的点, 为编号最小的点,有如下构造方案。
-
若 或 ,则所有连通块在可行时连 。
-
若对于所有连通块 ,不存在 ,即所有连通块编号在 两侧,我们将其分为左右集合,对于左集合右集合内部,用方案 ,再连边 。
-
若对于所有连通块 ,存在 ,则将所有 分为左集合,其余分为右集合,对于左集合,连 ,右集合,连 。由于 可能在左集合,这样会连一条边。我们找到右集合 最小值,连 。容易证明这样不会连成环。
可以用换根 dp 求出。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...