CF1832D2 Red-Blue Operations (Hard Version) 题解

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

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

考虑二分答案。

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

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

否则,用掉 cc 次操作,剩下 kck-c 次,设 s=j=1cajs=\sum_{j=1}^{c}a_j',则前 cc 个数可消耗掉 2s2s 次操作,那么剩下 kc2sk-c-2s 次操作分给后面 ncn-c 个数。

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

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

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

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

时间复杂度 O(qlogk)\mathcal O(q\log k)

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