二分答案 + 贪心.
给出一个长度为 $n$ 的自然数序列 $a$ ,满足 $a_i\in [0,m)$ .
每次操作可以选出任意个元素进行修改,元素 $x$ 在修改后会变为 $(x+1)\bmod m$ .
需要求出至少操作几次,可以使得整个序列单调不降.
可以二分一个答案 $k$ ,则只需判断在 $k$ 次操作内能否达到要求.
贪心一下,如果一个数能在 $k$ 次操作内变成上一个数,就把它变过去.
否则不变,若此时它比上个数小,就不合法了.
一个比较显然的答案上界是 $m$ ,因为操作 $m$ 次一定可以让所有数变成 $0$ .
时间复杂度 $O(n\log m)$ .
1 | //%std |