题意

给定N个人成环状坐,每个人初始分配Ai的金币,金币总数可以被N整除,每个人可以给左右相邻的人一定数量的金币使得最终每个人的金币数量相同,求转移数量最小的方案所转移的总金币数量。

N<=1000000

对每组数据保证输出在INT64范围之内。

1.最终每个人拥有的金币可以直接确定,设为M

2.设xi表示第i个人从上一个人手中获得的金币,若为负则标识它会给上一个人金币,注意x1是从第n个人手中获得金币的数量

3.我们的目标是使得 |x1|  + |x2| + ... |xn| 最小,并且使它可以以单变量表示

列出方程组

a1 + x1 - x2 = m

a2 + x2 - x3 = m

...

an + xn - x1 = m

转化得

x1 = m + x2 - a1

x2 = m + x3 - a2

...

xn-2 = m + xn-1 - an-2

xn-1 = m + xn - an-1

xn = xn

则有

xn-1 = xn - (an-1 - m)

xn-2 = xn-1  - (an-2 - m) = xn - (an-1 - m) - (an-2 - m)

xn-3 = ... = xn - (an-1 - m) - (an-2 - m) - (an-3 - m)

..

x1 = xn - (an-1 - m) - ... - (a1 - m)

引入数列Ci

Cn-1 = an-1 - m

Ck = Ck+1 + (ak - m)

所以

xn-1 = xn - Cn-1

xn-2 = xn - Cn-2

..

x1 = xn - C1

所以最终要求的就是|xn - C1| + |xn - C2| ... |xn - Cn-1| + |xn|

转化为物理意义,就是0,C1..Cn-1的数轴上,选取一个点,使得它到所有点的距离之和最小。

可证,为这些数的中位数。

转载于:https://www.cnblogs.com/dandi/p/4590592.html

分金币 Uva 11300相关推荐

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

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

  2. 分金币(Spreading the Wealth,UVa 11300)

    分金币 题目描述 给定N个人成环状坐,每个人初始分配Ai的金币,金币总数可以被N整除,每个人可以给左右相邻的人一定数量的金币使得最终每个人的金币数量相同,求转移数量最小的方案所转移的总金币数量. N& ...

  3. 《训练指南》中的“突击战”和分金币问题

    又到了周末,发现很堕落啊,眼看都星期天了,赶紧发一篇文章,总结一下上周学的. 原题见UVA11300,Spreading the wealth,和 UVA 11729 Commando War:先说突 ...

  4. Spreading the Wealth(UVa 11300)

    来自<算法竞赛入门经典训练指南> 1.题目原文 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...

  5. Spreading the Wealth( UVA - 11300)

    题目链接: Spreading the Wealth UVA - 11300 Problem A Communist regime is trying to redistribute wealth i ...

  6. 题解 UVA - 11300 Spreading the Wealth

    题解 UVA - 11300 Spreading the Wealth 1:题意 A Communist regime is trying to redistribute wealth in a vi ...

  7. 2014年第五届蓝桥杯C/C++ A组国赛 —— 第一题:海盗分金币

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

  8. 三姬分金/四姬分金/五姬分金(海盗分金币)等经典博弈论问题

    题目: A.B.C三人分100枚金币,按顺序提议. 规则:提议未获得半数以上(不包括半数)通过,则提议人被处死. 假如你是A,你会怎么提? 从后往前推 如果只剩下B.C 无论B怎么提议,C都不会同意, ...

  9. Java实现蓝桥杯分金币

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

最新文章

  1. gorm软删除_gorm踩坑:软删除与某个字段的唯一性
  2. HTML DOM Table 对象
  3. Java 中的四种引用
  4. mysql 自身参照自身_mysql个人散乱笔记,慎重参考
  5. 用php求矩形周长,PHP实现的简单三角形、矩形周长面积计算器分享
  6. oschina mysql limit_MySQL 用 limit 为什么会影响性能?
  7. 合并 多个dataframe_什么是Pandas的DataFrame?
  8. Android 屏幕适配攻略(三)单位dp与sp
  9. 关于出现Not an editor command: Bundle ‘**/*.vim‘的解决方案【转】
  10. jQuery Form Plugin (二) :使用AJAX提交Form表单
  11. struts2上传 zip和rar文件类型
  12. PS——制作 GIF动图 或是 小视频
  13. 2022年5月4号SSM框架整合学习一:
  14. 彻底卸载微软拼音输入法
  15. ie8 ajax 缓存问题,IE8/IE9下Ajax缓存问题
  16. 经典网页设计:20个优秀的电子商务网站设计案例
  17. Centos添加开机启动项【Systemctl方式】
  18. [益智]:猴子搬香蕉
  19. jsp怎么设置页面背景
  20. 钉钉开放平台API对接第三讲

热门文章

  1. 入门 | 初学者必读:解读14个深度学习关键词
  2. 中英翻译(基于百度翻译)
  3. Python 常用系统模块整理
  4. Springboot项目修改html后不需要重启---springboot项目的热部署
  5. GetModuleHandle(NULL)获取当前DLL模块基址?
  6. (转)Unity3DUnity3D在android下调试
  7. java项目打jar包
  8. Error: This command has to be run with superuser privileges (under the root user on most systems).
  9. 守护线程Daemon的理解
  10. 03-类与对象——课后动手动脑