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

    P2512 [HAOI2008]糖果传递


    题目描述

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


    输入输出格式

    输入格式:

     小朋友个数n 下面n行 ai

    输出格式:

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


    输入输出样例

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

    说明

    对于100%的数据 n<= 10^6


    数学题……

    hzwer大神の证明 ←讲的超详细的说qwq

    于是求一波中位数就可以了

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #define ll long long
    using namespace std;
    const int N=1e6+9;
    int n,a[N];
    ll sum,c[N],ans;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
        }
        ll ave=sum/n;
        for(int i=1;i<=n;++i)
        c[i]=c[i-1]-a[i]+ave;
        sort(c+1,c+n+1);
        int mid=c[n>>1];
        for(int i=1;i<=n;++i)ans+=abs(c[i]-mid);
        cout<<ans<<endl;
        return 0;
    } 
    candy

     by:wypx


  • 相关阅读:
    注册系统
    android登录界面
    android作业 购物界面
    第六周jsp作业
    JSP第四周
    JSP第二次作业
    JSP第一次作业
    第一周软件测试
    第九次安卓
    购物菜单
  • 原文地址:https://www.cnblogs.com/ck666/p/7634066.html
Copyright © 2011-2022 走看看