zoukankan      html  css  js  c++  java
  • P2512 [HAOI2008]糖果传递

    题目描述

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

    输入输出格式

    输入格式:

    小朋友个数n 下面n行 ai

    输出格式:

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

    输入输出样例

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

    说明

    对于100%的数据 n≤106

    Solution:

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

    代码:

    #include<bits/stdc++.h>
    #define il inline
    #define ll long long
    using namespace std;
    const int N=1e6+5;
    ll n,a[N],sum,s[N];
    il ll gi(){
        ll a=0;char x=getchar();bool f=0;
        while((x<'0'||x>'9')&&x!='-')x=getchar();
        if(x=='-')x=getchar(),f=1;
        while(x>='0'&&x<='9')a=a*10+x-48,x=getchar();
        return f?-a:a;
    }
    int main()
    {
        n=gi();
        for(int i=1;i<=n;i++)a[i]=gi(),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+n+1);
        sum=0;
        for(int i=1;i<=n;i++)sum+=abs(s[n/2+1]-s[i]);
        cout<<sum;
        return 0;
    }
  • 相关阅读:
    Java8基础之native方法
    Java基础之static关键字
    Java基础之继承
    Java之equals和hashCode方法
    Java基础之this关键字
    Java基础之super关键字
    Java基础之Serializable接口
    Java之反射学习
    Python3之多线程学习
    Python3之深拷贝和浅拷贝区别
  • 原文地址:https://www.cnblogs.com/five20/p/8870012.html
Copyright © 2011-2022 走看看