【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=1045
【算法】
环形均分纸牌问题
【代码】
#include<bits/stdc++.h> using namespace std; #define MAXN 1000010 int i,n; long long sum,ans; long long a[MAXN],s[MAXN]; int main() { scanf("%d",&n); for (i = 1; i <= n; i++) { scanf("%lld",&a[i]); sum += a[i]; } for (i = 1; i <= n; i++) { a[i] -= sum / n; s[i] = s[i-1] + a[i]; } sort(s+1,s+n+1); for (i = 1; i <= n; i++) ans += abs(s[(n+1)/2] - s[i]); printf("%lld ",ans); return 0; }