专栏文章

题解:AT_agc057_b [AGC057B] 2A + x

AT_agc057_b题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min3wo4g
此快照首次捕获于
2025/12/01 20:09
3 个月前
此快照最后确认于
2025/12/01 20:09
3 个月前
查看原文

题解

对于一些神秘题我们考虑先从简单情况入手。我们考虑两个数 x,yx,y 怎么做。如果 x<<yx<<y 那么我们一定是先让 xx 变大;如果 x<y<2xx<y<2x 那么考虑令 d=yxd=y-x,如果 d<kd<k 那么通过一定的操作我们能够让两者相同,否则每次的差距只会越来越大,所以不操作最优。我们考虑将 xx 扩展能够得到 [2x,2x+k][2x,2x+k],每次都是一段区间。如果区间能够包含 yy 那么就没有贡献,否则我们肯定是找到 yy 前面区间的右端点和后面区间的左端点进行选择最优。
对于多个数的情况考虑一个特殊的数,也就是序列最大值,假设叫 tt。如果我们最后得到的序列 xx 被操作了 qq 次,那么其他数起码都要操作 qq 次。证明考虑如果再条一步一定会离 tt' 更近。所以我们可以让 tt 固定,去考虑剩下的数。因为 tt 固定了,所以我们肯定是让其他数尽量靠近它才更优。于是就变成了若干上面两个数的问题,只不过现在对于一个数我们有两种选择,要么选前面区间的右端点 lpilp_i,要么选后面区间的左端点 rpirp_i,最后要让选出的数极差最小。这个问题我们可以按 lpilp_i 排序,然后我们去考虑答案区间左端点的位置。假设是 lpilp_i,那么对于 i+1i+1n1n-1 的数我们选 lplp 一定不劣,剩下的一定会选 rprp,于是我们维护一个前缀 rprp 最大值即可。

评论

0 条评论,欢迎与作者交流。

正在加载评论...