我是靠谱客的博主 体贴电源,最近开发中收集的这篇文章主要介绍1432:糖果传递,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1432:糖果传递

(ybt 太毒瘤了,这个题输出答案要用cout   ,  printf不行)

洛谷: P2512 [HAOI2008]糖果传递

 

题解

每人每次传递一个糖果代价为1

每人每次传递一个糖果代价为1

每人每次传递一个糖果代价为1

 

 

 

代码

#include<bits/stdc++.h>

using namespace std;

int n,a[1000001],c[1000001];
long long sum=0,anv,ans;

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        sum+=a[i];
    }
    anv=sum/n;   //最终小朋友手里的糖数 
    
    c[1]=a[1]-anv+a[n];    //左边的小朋友传给右边(他们坐成了一个环) 
    for(int i=2;i<=n;i++)
       c[i]=a[i]-anv+c[i-1];
    
    sort(c+1,c+n+1);   //每个人要传递多少 
    
    int mid=c[n/2+1];    //传递的中位数 
    for(int i=1;i<=n;i++)  
      ans+=fabs(c[i]-mid);   //只需要传递到中位数就好了,多了太浪费 
    
    printf("%ld",ans); 
    
}
 

 

转载于:https://www.cnblogs.com/xiaoyezi-wink/p/10992273.html

最后

以上就是体贴电源为你收集整理的1432:糖果传递的全部内容,希望文章能够帮你解决1432:糖果传递所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部