lkmcfj有很多书,他想整理一下自己的图书。
每本书都有一个a[i]作为它的标签。现在有n本书排成了一排,lkmcfj要对它们的标签进行修改以满足要求。
设第i本书的标签上个的数字与它之前所有的图书标签上数字之和为sum[i],即:
sum[1]=a[1],sum[i]=sum[i-1]+a[i](i>1)(就是前缀和吧)
每次操作,lkmcfj都可以把一个标签加1或者减1,而所有图书需要满足以下条件:
1.sum[i]不为零。
2.对于i>1的,sum[i]与sum[i-1]正负相反。
蒟蒻总结了一下:
1.在ans次操作后,读入a[i]时的sum[i]与操作a[i]后的sum[i]必须相同;(也就是说改变后的序列不能改变前缀和的大小)
2.a[i]在操作后,要变成“正 负 正 负”或“负 正 负 正”的样子,且数列中没有0。
lkmcfj想知道,最少需要多少次操作才能使序列变成他希望的样子。
第一行一个正整数,n,表示书本数量。
第二行n个正整数a[i],意义如题目所述。
一行,一个正整数,表示最少的操作次数。
4
1 -3 1 0
4
将序列变成:
1,-2,2,-2即可
对于30%的数据,n<=10; 对于100%的数据,n<=1,000,000,a[i]<=1,000,000,000