码迷,mamicode.com
首页 > 其他好文 > 详细

P2512 [HAOI2008]糖果传递

时间:2018-04-17 21:19:32      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:const   说明   math   个数   getch   输入输出格式   include   pre   name   

题目描述

有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。

输入输出格式

输入格式:

小朋友个数n 下面n行 ai

输出格式:

求使所有人获得均等糖果的最小代价。

输入输出样例

输入样例#1: 
4
1
2
5
4
输出样例#1: 
4

说明

对于100%的数据 n≤106

 

Solution:

  本题和上篇博客一样,又是一道环形均分纸牌问题,只不过本题数据比较大,注意开$long\;long$和读入优化,基本就$OK$了。

代码:

 

 1 #include<bits/stdc++.h>
 2 #define il inline
 3 #define ll long long
 4 using namespace std;
 5 const int N=1e6+5;
 6 ll n,a[N],sum,s[N];
 7 il ll gi(){
 8     ll a=0;char x=getchar();bool f=0;
 9     while((x<0||x>9)&&x!=-)x=getchar();
10     if(x==-)x=getchar(),f=1;
11     while(x>=0&&x<=9)a=a*10+x-48,x=getchar();
12     return f?-a:a;
13 }
14 int main()
15 {
16     n=gi();
17     for(int i=1;i<=n;i++)a[i]=gi(),sum+=a[i];
18     sum/=n;
19     for(int i=1;i<=n;i++)a[i]-=sum,s[i]=s[i-1]+a[i];
20     sort(s+1,s+n+1);
21     sum=0;
22     for(int i=1;i<=n;i++)sum+=abs(s[n/2+1]-s[i]);
23     cout<<sum;
24     return 0;
25 }

 

 

 

P2512 [HAOI2008]糖果传递

标签:const   说明   math   个数   getch   输入输出格式   include   pre   name   

原文地址:https://www.cnblogs.com/five20/p/8870012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!