题目描述:
有 n 个小朋友坐成一圈,每人有 a[i] 个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为 1。求使所有人获得均等糖果的最小代价。
输入格式
第一行输入一个正整数 n,表示小朋友的个数。
接下来 n 行,每行一个整数 a[i],表示第 i 个小朋友初始得到的糖果的颗数。
输出格式
输出一个整数,表示最小代价。
数据范围
1≤n≤1000000,
0≤a[i]≤2×109,
数据保证一定有解。
输入样例:
4
1
2
5
4
输出样例:
4
数学思路:
设最终的数量为average,这个肯定能求出来,从而假设,average=a[i]-xi+x(i+1);含义为:第i个人逆时针传递给第i-1个人xi个糖果,从第i+1个人哪里得到x(i+1)个糖果。
这样就有:
average=a[1]-x1+x2
....
average=a[n]-xn+x1;
则有:
x2=average-a[1]+x1;
x3=average-(a[2]-x2)=2*average-(a[1]+a[2])+x1;
........
xn=(n-