传送门
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