uva11130

简介: 分金币题意:圆桌上有n个人,每人有若干金币,金币总和能整除n,每个人可以分给他相邻两个人若干金币,现在需要使每个人最终金币数量相同,求需要转移的金币数量总和的最小值。类型:单变量极值->中位数问题 代码 #include #include using namespace std; co...

分金币
题意:圆桌上有n个人,每人有若干金币,金币总和能整除n,每个人可以分给他相邻两个人若干金币,现在需要使每个人最终金币数量相同,求需要转移的金币数量总和的最小值。
类型:单变量极值->中位数问题

代码

#include <stdio.h>
#include <iostream>
using namespace std;
const int maxn = 1000000 + 10;
long long a[maxn], c[maxn], tot, m;
int main(){
    int n;
    while(scanf("%d", &n)!=EOF){
        tot = 0;
        int i, j;
        for(i=1; i<=n; i++){
            scanf("%lld", a+i);
            tot += a[i];
        }
        m = tot / n;
        c[0] = 0;
        for(i=1; i
            c[i] = c[i-1] + a[i] - m;
        sort(c, c+n);
        long long x1 = c[n/2];
        long long ans = 0;
        for(i=0; i
            ans += abs(x1 - c[i]);
        printf("%lld\n", ans);
    }
    return 0;
}



目录
相关文章
|
6月前
|
机器学习/深度学习 存储 人工智能
HDU - 5912——Fraction
HDU - 5912——Fraction
|
人工智能 Java
hdu 1712 ACboy needs your help
ACboy这学期有N门课程,他计划花最多M天去学习去学习这些课程,ACboy再第i天学习第j门课程的收益是不同的,求ACboy能获得的最大收益。
137 0
|
机器学习/深度学习 算法
|
Java BI
HDU 2034 人见人爱A-B
人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 77157    Accepted Submission(s): 21509 Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。
1158 0
hdu 1856 More is better
点击hdu 1856思路: 思路: 离散化+并查集 分析: 1 点数最多为10^7,但是边数最多10^5,所以我们必须采用离散化,然后利用带权并查集的思想,rank[x]表示的是以x为根节点的集合的元素个数 2 这一题主要注意的就是当...
828 0