来源:https://vjudge.net/problem/UVA-11300

题意:

有n个人围成一圈,每个人有一定数量的金币,每次只能挪动一个位置,求挪动的最少金币使他们平分金币

题解:

蓝书p6

令x1为1号给2号的金币数,负数代表反方向   x2为2号给3号的金币数      x3为3号给4号的金币数

而a1-x1+xn=m(m为平均数)a2-x2+x1=m    a3-x3+x2=m

我们要求的就是|x1|+|x2|+|x3|+...|xn|

用x1表示x2,x3,x4

ans=|x1|+|x1-G1|+|x1-G2|....

x1到n个点的距离和最短时,就是正解

而这个点==G[MID]

#include <cstdio>
#include <algorithm>
#include <iostream>
#define ll long long
using namespace std;
const int maxn=1000000+5; ll num[maxn];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
ll sum=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&num[i]);
sum+=num[i];
}
ll M=sum/n;
num[1]=0;
for(int i=2;i<=n;i++)
num[i]=M-num[i]+num[i-1];
sort(num+1,num+1+n);
int mid=n/2+1;
ll ans=0;
for(int i=1;i<=n;i++)
ans+=abs(num[mid]-num[i]);
printf("%lld\n",ans);
}
return 0;
}

  

uva11300 分金币(中位数)的更多相关文章

  1. UVA11300分金币

    题意:      圆桌旁作者n个人,每个人都有一定数量的金币,他们每次可以给相邻的人一枚金币(可以给多次),问所有人金币数都相同的话最少要给多少次金币.思路:       这个题目感觉很好,首先我们可 ...

  2. 【BZOJ-3293&1465&1045】分金币&糖果传递×2 中位数 + 乱搞

    3293: [Cqoi2011]分金币 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 854  Solved: 476[Submit][Status] ...

  3. 【贪心+中位数】【UVa 11300】 分金币

    (解方程建模+中位数求最短累积位移) 分金币(Spreading the Wealth, UVa 11300) 圆桌旁坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一 ...

  4. 分金币 bzoj 3293

    分金币(1s 128M)  coin [问题描述] 圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等.你的任务是求出被转手的 ...

  5. BZOJ3293: [Cqoi2011]分金币(数学)

    3293: [Cqoi2011]分金币 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1596  Solved: 969[Submit][Status ...

  6. cogs 1430. [UVa 11300]分金币

    1430. [UVa 11300]分金币 ★☆   输入文件:Wealth.in   输出文件:Wealth.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 圆桌旁坐着 ...

  7. 【BZOJ3293】分金币(贪心)

    [BZOJ3293]分金币(贪心) 题面 BZOJ 洛谷 题解 和上一题一样啊. #include<cstdio> #include<cmath> #include<al ...

  8. Java实现蓝桥杯分金币

    分金币 圆桌旁坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币, 最终使得每个人的金币数目相等.你的任务是求出被转手的金币数量的最小值. 比如,n=4,且4个人 ...

  9. java实现第五届蓝桥杯海盗分金币

    海盗分金币 有5个海盗,相约进行一次帆船比赛. 比赛中天气发生突变,他们被冲散了. 恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人. 第一个人在沙滩上发现 ...

随机推荐

  1. mssql sqlserver SQL 位运算举例权限应用

    摘要: 下文通过举例的方式讲述sqlserver中位运算的相关知识,如下所示: 实验环境:sqlserver 2008 R2 在sqlserver的权限设置,我们通常使用1.2.4.8.16.32.6 ...

  2. C#学习之接口

    什么是接口?其实,接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致.个人觉得,使用接口可以使程序更加清晰和条理化,这就是接口的好处,但并不是所有的编程语言都支持接口,C#是支持接口的. ...

  3. Django 2.1.3 文档

    https://blog.csdn.net/lengfengyuyu/article/details/83342553#3_23

  4. python中装饰器的原理

    装饰器这玩意挺有用,当时感觉各种绕,现在终于绕明白了,俺滴个大爷,还是要慢慢思考才能买明白各种的真谛,没事就来绕一绕 def outer(func): def inner(): print(" ...

  5. Teradata的DBQL使用

    1.赋权 grant exec on DBC.DBQLAccessMacro to Sysdba with grant option; 2.刷新DBQL或TDWM缓存到磁盘,立即能在数据库中查询到刚刚 ...

  6. 官网下载Git方法

    最近去官网下载Git,奇慢,下到一半直接挂掉,挂VPN也是一样 https://git-scm.com/  今天学到一个方法,下载速度可以达到2m/s,那就是复制下载地址,用迅雷下载,可能是迅雷有P2 ...

  7. 将逗号分隔的字符串转换为Python中的列表

    给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转换为列表? mStr = ['192.168. ...

  8. 鼠标右键打开命令行cmd(管理员身份)

    参考:https://blog.csdn.net/bdss58/article/details/54745380 添加到注册表 将下面命令保存为reg文件: Windows Registry Edit ...

  9. Python之Requests库的异常

    异常                        说明                                     requests.ConnectionError 网络链接错误一场,如 ...

  10. [ZJOI2012]灾难

    嘟嘟嘟 偶尔翻到的一道题. 50分暴力很好想,对于每一个点进行一次拓扑排序,然后每一次别memset,只清空走过的点,能拿到70分. 正解好像也挺好想,是一个叫"灭绝树"的东西. ...