专栏文章
P9600
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip3i9jr
- 此快照首次捕获于
- 2025/12/03 05:33 3 个月前
- 此快照最后确认于
- 2025/12/03 05:33 3 个月前
- 一棵树上有两个城市 ,令 到 路径上的点集合(包括端点)为 ,你需要对点 分配 使得 ,同时对于一个点 ,如果 则获得 收益, 则同样获得 收益,求合法方案中收益最大的。
- \item 显然第 个点只有可能有 种 ,,下令 。
- 先把点分成这三类点:

- 可以发现如果有点 满足 ,则有 ,且 ,可以分类讨论 A,B,C 类点来证明。
- 分两种讨论,第一种是不存在 满足 ,这个直接 sort 一遍优先选距离最小的即可。不需要判断是否合法,因为先选距离更远的一定不优,如上图,如果只选择了 14,改为选 12 花费的显然更少。
- 第二种是存在 ,这个就先让所有 C 类点的 加到 ,即 ,然后按照 排序,排序后显然可以找到一个中间点 ,使得 或 ,且 或 。
- 这等价于证明最优方案不存在 ,显然如果存在,让 ,此时 对答案总贡献不改变,并且 减少了。
- 这里也不需要判断是否合法,证明跟前面类似,先选距离更远的一定不优。
- 先拆贡献,在 前面的都先对 贡献 ,然后前面部分就变成了 ,后面部分是 。以下令这部分为
- 枚举 ,二分 ,check 。
- 把这个离散化一下然后放到权值树状数组里,求 答案就像前面的二分求,复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...