SNMOJ 31
考虑将给入的$A$数组差分,得到差分数组$C$
每一次操作相当于把差分数组的每一位${+1}$,其中一个位置上${-n+1}$。
我们可以直接算出要进行多少次操作:${T=\frac{\sum A[i]}{n*(n+1)/2}}$当然如果不能整除的话,说明一定无解。
问题转化为当前状态为$C$,目标状态为${E\left \{ T,T...,T \right \}}$每次要选择一个位置${+n}$,问是否可以刚好$T$步到达目标状态。
比如:
$${A\left \{ \left. 6,9,12,10,8 \right \} \right.}$$
$${C\left \{ \left. -2,3,3,-2,-2 \right \} \right.}$$
$${E\left \{ 3,3,3,3,3 \right \}}$$
显然在$1,4,5$号位置上各操作一次,一共操作$3$次即可,满足要求。
但是有一个小Trick:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
3 5 1 6
本文作者:xrdog
作者博客:http://www.cnblogs.com/Dragon-Light/
转载请注明出处,侵权必究,保留最终解释权!