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

    洛咕

    BZOJ

    洛咕上的双倍经验

    题意:有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。

    分析:七夕祭的弱化版???均分纸牌的加强版???

    先按照均分纸牌的做法,求出平均数ave,即每个人最终手里的糖果数,然后用他们现有的糖果数减去ave,即得到每个人需要送出或者得到的糖果数.接下来的做法就跟上面的七夕祭一样了,懒得写了.

    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #define LL long long
    using namespace std;
    inline int read(){
        int x=0,o=1;char ch=getchar();
        while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
        if(ch=='-')o=-1,ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x*o;
    }
    const int N=1000005;
    LL sum,ans,a[N],S[N];
    int main(){	
    	int n=read();
    	for(int i=1;i<=n;++i){
    		a[i]=read();
    		sum+=a[i];
    	}
    	LL ave=sum/n;
    	for(int i=1;i<=n;++i){
    		a[i]-=ave;
    		S[i]=S[i-1]+a[i];
    	}
    	sort(S+1,S+n+1);
    	for(int i=1;i<=n;++i){
    		ans+=abs(S[i]-S[(n+1)/2]);
    	}
    	printf("%lld
    ",ans);
        return 0;
    }
    
    
  • 相关阅读:
    Flex布局-语法篇
    css grid布局
    js 方法的一些简写和技巧
    css瀑布流
    js防抖和节流
    js循环
    两行css代码实现居中元素
    手写代码部分
    BigDecimal类的概念和使用
    Math类的概念和使用
  • 原文地址:https://www.cnblogs.com/PPXppx/p/11236345.html
Copyright © 2011-2022 走看看