CF1832D2 Red-Blue Operations (Hard Version) 题解

由 D1 的结论,将最后 nn 个操作倒序加入原数组,然后每个数用偶数次操作,每两次操作 −1-1,最后可能剩下一个操作,加到最大数上。

感性理解,由于要使得最后的操作是 ++,那么前面一定是 +−+−+−+-+-+- 排列的,那么每次 −1-1 最优。

考虑二分答案。

考虑“最后 nn 个操作倒序加入原数组”的操作,记 ai′a_i' 为 ai+k−i+1a_i+k-i+1,则 aia_i 变为 ai′a_i'。

记 <x<x 的数有 cc 个,如果 min⁡j=1caj′<x\min_{j=1}^{c}a_j'<x,那么无解。

否则,用掉 cc 次操作,剩下 k−ck-c 次,设 s=∑j=1caj′s=\sum_{j=1}^{c}a_j',则前 cc 个数可消耗掉 2s2s 次操作,那么剩下 k−c−2sk-c-2s 次操作分给后面 n−cn-c 个数。

如果 n−c=0n-c=0,无解。

如果 k−c−2sk-c-2s 为奇数,那么全部分给一个数,显然增加,必然有解。

如果 n−c≥2n-c\ge 2,那么选择两个数分别操作奇数次,由上,必然有解。

否则,剩下偶数次操作,只能分给一个数,那么 ana_n 必须减去 k−c−2s2\frac{k-c-2s}{2},判断是否 ≥x\ge x 即可。

时间复杂度 O(qlog⁡k)\mathcal O(q\log k)。

posted @ 2023-05-16 14:06  蒟蒻orz  阅读(41)  评论(0)    收藏  举报  来源