题意:给你一个长度为n的数组a,你可以选择任意的子串进行操作:
使子串的奇数位+1,偶数位-1:
使子串的偶数位+1,奇数位-1.
他想问你最少需要经过多少次操作,可以将数组全部元素变成0
思路:我们做前缀和数组s,因为原数组就是前缀和数组的差分数组,即s是a的前缀和数组,那么a就是s的差分数组,
那么对子串的操作任意区间的+1-1对应前缀和数组就为任意的前缀和+1或者-1.
比如原数组为
前缀和数组为
那么我在选择奇数位+1,选择的区间为
,
那么对应到前缀和数组中就是
,因为我们可以选择任意的区间进行操作,所以我们一次可以进行
数组操作转化为前缀和问题
通过建立前缀和数组,将对原数组的奇偶位操作转化为对前缀和数组的加减操作,从而求解将所有元素变为0所需的最小操作次数。每次操作可以改变一个子串的奇偶位数值,影响前缀和数组的一个范围。
4万+

被折叠的 条评论
为什么被折叠?



