题解:CF2057B Gorilla and the Exam

传送门

Statement

给定数组 \(a\),定义每次操作为选择区间 \([l,r]\),记 \(x = \min_{l\leq i \leq r}{a_i}\),删除区间内所有 \(a_i = x\),给你 \(k\) 次修改的机会,每次修改某一个位置的数,问最少需要几次操作使得原数组全为 \(0\)

Solution

最初不做任何修改的操作次数定为原数组中不同数的个数,记它为 \(cnt_i\)\(k\) 次修改等效于抵消掉了一部分 \(cnt_i\),如果 \(cnt_i > k\) 并不能一次操作消掉区间内所有数。

\(k\) 能抵消到的最远位置为 \(x\),剩余的 \(n - x + 1\) 个是必须要操作的,即为答案。

如果 \(\sum cnt_i \geq k\),可以修改之后一次操作全部消掉,答案即为 \(1\),以上两种情况讨论即可。

code

Submission

posted @ 2025-01-06 09:16  Alec_Ayaka  阅读(5)  评论(0编辑  收藏  举报