1 条题解
-
0
自动搬运
来自洛谷,原作者为

zhongyuwei
**搬运于
2025-08-24 22:09:11,当前版本为作者最后更新于2020-04-20 20:13:12,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
参考资料
- IOI2018 集训队论文 高睿泉 《浅谈保序回归问题》
- 大米饼的博客
Sol
部分分:
考虑一个更加一般的形式:已知 ,要求确定 ,使得 且 最小。
定义一个点集 的均值为:让 取到最小值的 。对于这道题,(通过求导可得)
引理 1
能达到最优解的 是唯一的。
证明:将 和 看作两个 维向量,权值函数可以看作两个点之间的距离。由于不等式组 的解空间是一个凸集,所以到 的距离最短的 是唯一的。
引理 2
如果 ,那么最优解中一定有 。
证明:参考 IOI2018 集训队论文《浅谈保序回归问题》
引理 2 启发我们可以考虑这样的一个过程:每一次找到一个满足 的 ,然后将 和 合并。具体地,应该把 替换为 $(w_i + w_{i+1}, \frac{w_iA_i + w_{i+1}A_{i+1}}{w_i + w_{i+1}})$,这样前后的权函数只相差一个常数,直接在合并的时候把这个常数加入答案即可。合并到无法合并的时候,直接令每个 都取 ,这就是最优方案。最终的答案就是在合并的过程中产生的那些常数的和。
由引理 1 可知,无论以任何顺序合并,最终得到的 都是相同的,所以合并过程完成以后得到的那些同值的段(下文称为等值段)也一定是相同的。
正解
把询问离线下来依次处理。对于询问 ,先处理好只考虑 和 时,等值段的划分情况(可以用从左到右和从右到左的单调栈分别维护)。
最终的划分方案一定是:保留 的等值段划分的一个前缀,保留 的等值段划分的一个后缀,剩下的部分和 合并为一段。设这个前缀包含了 的前 个等值段,这个后缀包含了 的后 个等值段。设 之间(不含 )的元素合并起来后的权值(也就是它们的平均值)为 。设 中从左到右第 段的 为 ,设 中从右到左第 段的 为 。
考虑如何求出 。我们对 的要求是:
- 之间的元素确实能合并成一段(即合并过程中不存在把 的两个元素合并了的情况)
考虑这样一个算法:从大到小枚举 ,然后求出最大的 ,使得 ;如果 就退出,把此时的 作为答案,否则继续枚举 。
- 对于某个固定的 来说
- 考虑某个比求出的 更小的 : 一定合并了不能合并的段(即满足 的两个段)
- 考虑某个比求出的 更大的 : 一定还能和左边的段合并,所以不可能和 一起作为最终的等值段
- 故而,对于固定的 来说,最大的满足 的 是唯一可能使 合法的
假设 为算法结束时的 :任意一个大于 的 显然不可能成为最终的等值段的右端点(因为还可以和右边的段合并);而任意一个小于 的 , 一定合并了不能合并的段。
所以,算法结束时求出来的 就是我们想求的答案。
算法的优化:
- 在已知 的情况下求最大的满足 的
- 可以证明,如果 满足条件,那么 也满足条件
- 由于 ,又因为 ,所以 ,那么 一定小于 中的元素的平均值(也就是 ),所以 一定也满足条件
- 所以可以直接二分
- 可以证明,如果 满足条件,那么 也满足条件
- 求最大的 ,使得满足 的最大的 也满足
- 一个重要的观察是,对于某个固定的 ,满足 的最大的 ,就是使 取到最大值的
- 可以证明,如果 满足条件,那么 也满足条件
- 设 求出的 为 , 求出的 为 ,那么 , 和 都小于 ,所以 小于
- 所以可以直接二分
总时间复杂度为 。
Code
- 1
信息
- ID
- 4278
- 时间
- 2000ms
- 内存
- 500MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者