- P2512 [HAOI2008]糖果传递
- 思路 :无论怎么糖果转移一定会有一个位置不是双向转移的,所以可以把环段位链然后用 链的均分公式求解,
- 这样不同断开位置会有不同结果公式为
- k为断开位置,显然在S前缀和数组中 K取中位数时最小。
-
#include<bits/stdc++.h> using namespace std; #define maxn 1234657 #define ll long long int ave,n,a[maxn]; ll ans,s[maxn],sum; int main() { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); sum+=a[i]; } sum/=n; for(int i=1; i<=n; i++) { a[i]-=sum; s[i]=s[i-1]+a[i]; } sort(s+1,s+1+n); sum=s[n/2+1]; for(int i=1; i<=n; i++) ans+=abs(s[i]-sum); printf("%lld\n",ans); return 0; }
P2512 [HAOI2008]糖果传递-环形纸牌
猜你喜欢
转载自blog.csdn.net/BePosit/article/details/85104140
今日推荐
周排行