- 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]糖果传递-环形纸牌
本文深入解析了HAOI2008竞赛中的糖果传递问题,提出了一种通过将环段位链并利用链的均分公式求解的策略。详细介绍了如何通过计算前缀和并选取中位数作为断开位置,来最小化糖果转移过程中的总成本。

被折叠的 条评论
为什么被折叠?



