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:

3
5 1 6 
View Code

 

posted @ 2017-02-19 21:24  №〓→龙光←  阅读(129)  评论(0编辑  收藏  举报