BZOJ 1045 [HAOI2008] 糖果传递
2016-11-07 20:22
218 查看
Description
有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。
Input
第一行一个正整数n<=987654321,表示小朋友的个数.接下来n行,每行一个整数ai,表示第i个小朋友得到的
糖果的颗数.
Output
求使所有人获得均等糖果的最小代价。
【题目分析】
中位数+结论。
【代码】
有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。
Input
第一行一个正整数n<=987654321,表示小朋友的个数.接下来n行,每行一个整数ai,表示第i个小朋友得到的
糖果的颗数.
Output
求使所有人获得均等糖果的最小代价。
【题目分析】
中位数+结论。
【代码】
#include <cstdio> #include <algorithm> using namespace std; #define ll long long ll a[1000001],f[1000001],ave,ans; int n; int main() { scanf("%d",&n); for (int i=1;i<=n;++i) { scanf("%lld",&a[i]); ave+=a[i]; } ave/=n; for (int i=1;i<=n;++i) f[i]=f[i-1]+a[i]-ave; sort(f+1,f+n+1); ll mid=f[n/2+1]; for (int i=1;i<=n;++i) ans+=abs(f[i]-mid); printf("%lld\n",ans); }
相关文章推荐
- 【bzoj 1045】[HAOI2008] 糖果传递
- bzoj1045 [HAOI2008] 糖果传递
- BZOJ 1045/1465: [HAOI2008] 糖果传递
- bzoj3293 [Cqoi2011]分金币&&bzoj1045 [HAOI2008]糖果传递
- [BZOJ1045][HAOI2008][贪心]糖果传递
- bzoj1045: [HAOI2008] 糖果传递 贪心
- 【BZOJ1045】[HAOI2008] 糖果传递【绝对值不等式】【中位数】【数形结合】
- bzoj3293 [Cqoi2011]分金币&&bzoj1045 [HAOI2008]糖果传递
- 【BZOJ1045】【HAOI2008】糖果传递
- [BZOJ1045]HAOI2008糖果传递|中位数|数学
- BZOJ 1045: [HAOI2008] 糖果传递【数学题】
- 【bzoj1045】【HAOI2008】 糖果传递
- 【bzoj1045】[HAOI2008] 糖果传递
- 【BZOJ1045】[HAOI2008] 糖果传递 贪心
- 【数学】【HAOI2008】【BZOJ1045糖果传递】【BZOJ3293分金币】论数学的重要性
- [bzoj1045][HAOI2008]糖果传递
- bzoj 1045: [HAOI2008] 糖果传递
- BZOJ1045 HAOI2008糖果传递(贪心)
- bzoj1045【haoi2008】糖果传递
- bzoj 1045: [HAOI2008]糖果传递