P4552. IncDec Sequence
考点
- 差分
- 贪心
题解
1 |
|
思路
根据原数组建立差分数组diff
后,题目的要求就变成了:
在差分数组
diff
中,除下标1以外,每次在2~n中选两个下标,一个值+1,一个值-1,
求能把除下标1以外的其他位置的值都归0的最小次数。
举个例子,有如下数组:
1 | 2 | 4 | 1 | 2 | 3 |
---|
求出差分数组diff
:
1 | 1 | 2 | -3 | 1 | 1 |
---|
为了让归0的次数最少,显然希望每次都是负数+1,正数-1
两轮后变成了:
1 | 1 | 0 | -1 | 1 | 1 |
---|
再一轮:
1 | 1 | 0 | 0 | 1 | 0 |
---|
现在场上只剩正数了,继续:
1 | 0 | 0 | 0 | 2 | 0 |
---|
此时如果将diff
转回正常数组,得到如下:
1 | 1 | 1 | 1 | 3 | 3 |
---|
在保证最小次数的情况下,也就是只剩2次操作机会,整个序列可以取1或2或3。
综上,设差分数组diff
中,
除下标1外的负数绝对值和为neg
,除下标1外的正数绝对值和为pos
;
最大操作次数等于max(neg, pos)
;
序列的可能数等于abs(neg - pos) + 1
。