题面
Solution
因为要求最小操作次数,我们考虑二分答案。
因为每次都是任选 $k$ 个数,所以我们可以看做是每个数都能操作最多 $k$ 次。
定义 $pre$ 为当前元素的前一个元素
要判定 $mid$ 是否有解,我们有如下策略:
- 如果能够在加爆之后变为 $pre$ ,那么就让它变成 $pre$ 。
- 如果不行,且当前元素不小于 $pre$ ,就将 $pre$ 更新为 $val_i$ 。
- 如果无论怎么都不能使其不小于 $pre$ ,返回 $false$ 。
Code
1 |
|
总结
一般遇到最大值,最小值,最大值最小,最小值最大这一类的问题,我们都可以尝试使用二分法来降低实现的难度。