uva 11300 Spreading the Wealth_数学推倒 + 思维
这道题和负载平衡问题是同一道题, 如果 $n <= 100$ 的话是可以用最小费用流来求解的。
但是题中 $n$ 最大可达到 $10^6$, 这就需要我们进行一些性质分析与推导。
首先, 我们设每个·人手里最终金币数为 $C$
设 $X_{i}$ 为第 $i$个人给第 $i+1$ 个人的金币数目, 这个数目可以为负(第$i + 1$ 个人向左给了第$i$ 个人$|X_{i}|$个。
则我们不难发现:
1. $A_{2}+X_{1}-X_{2}=C$
2. $A_{3}+X_{2}-X_{3}=C$
3. $A_{4}+X_{3}-X_{4}=C$
4. ...
5. $A_{i}+X_{i-1}-X_{i}=C$
而这道题要求的其实就是$min|X_{1}| + |X_{2}| + |X_{3}| + |X_{4}| +... |X_{n}|$
那么,我们可将上面的等式进行变形,得:
1. $X_{1} = X_{1}$
2. $X_{2} =A_{2}-C+X_{1}$
3. $X_{3} =A_{2} + A_{3}-2*C+X_{1}$
4. $X_{4} =A_{2} + A_{3} +A_{4}-3*C+X_{1}$
5. $X_{5} =A_{2}+A_{3}+A_{4}+A_{5}-4*C+X_{1}$
此时,相信聪明的读者们不难发现规律:
$X_{i} = \sum\limits_{k=2}^i-(i-1)*C+X_{1}$ 即 $X_{i} = \sum\limits_{k=2}^i-(i-1)*C-(-X_{1})$
我们可以把$X_{1}$抽象成数轴上的一个点, 我们设$g_{i}= \sum\limits_{k=2}^i-(i-1)*C$,那么我们希望 $X_{1}$ 到所有 $g_{i}$ 的距离和最短,这个 $X_{i}$ 一定是 $g_{i}$中的中位数,于是我们将所有的 $g_{i}$ 排序,取中位数作为 $X_{1}$ 即可,我们也就能顺便推出所有的 $X_{i}$ ,最后加和即可,总时间复杂度为 $O(nlogn)$
uva 11300 Spreading the Wealth_数学推倒 + 思维的更多相关文章
- 数学/思维 UVA 11300 Spreading the Wealth
题目传送门 /* 假设x1为1号给n号的金币数(逆时针),下面类似 a[1] - x1 + x2 = m(平均数) 得x2 = x1 + m - a[1] = x1 - c1; //规定c1 = a[ ...
- UVA.11300 Spreading the Wealth (思维题 中位数模型)
UVA.11300 Spreading the Wealth (思维题) 题意分析 现给出n个人,每个人手中有a[i]个数的金币,每个人能给其左右相邻的人金币,现在要求你安排传递金币的方案,使得每个人 ...
- UVa 11300 Spreading the Wealth(有钱同使)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: "Times New ...
- uva 11300 - Spreading the Wealth(数论)
题目链接:uva 11300 - Spreading the Wealth 题目大意:有n个人坐在圆桌旁,每个人有一定的金币,金币的总数可以被n整除,现在每个人可以给左右的人一些金币,使得每个人手上的 ...
- UVA - 11300 Spreading the Wealth(数学题)
UVA - 11300 Spreading the Wealth [题目描述] 圆桌旁边坐着n个人,每个人有一定数量的金币,金币的总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金 ...
- UVA 11300 Spreading the Wealth (数学推导 中位数)
Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...
- 【思维】UVA 11300 Spreading the Wealth
题目大意 vjudge链接 有n个人围圆桌而坐,每个人有Ai个金币,每个人可以给左右相邻的人一些金币. 若使得最终所有人金币数相等,求最小金币转移数. 数据范围 n<1000001 样例输入 3 ...
- Uva 11300 Spreading the Wealth(递推,中位数)
Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...
- Math - Uva 11300 Spreading the Wealth
Spreading the Wealth Problem's Link ---------------------------------------------------------------- ...
随机推荐
- javase 异常处理
1.简述什么是异常.异常的继承体系? 异常就是java代码块在运行时出现的错误,有编译错误和运行错误, Throwable是所有异常的父类它包含了error和Exception两个子类. 其中e ...
- 怎么让composer加速(转)
composer 在install的时候会做这几个事情: 去packagist.org中寻找对应需要的包的版本信息和下载地址 循环下载对应的包 解压安装对应的包 我们平时使用composer慢就可能在 ...
- linux笔记常用命令
LINUX成长日记 1.本人工作实例:(将一台服务器的数据库复制到另外一台服务器上) scp -r -P 8351 /bak_mysql/sz_b2b2c201705180200.sql root@1 ...
- UVALive-8138 Number Generator 概率dp+优化
题目链接:https://cn.vjudge.net/problem/UVALive-8138 题意 有一个随机数生成器,输出1-n的整数. 现在已经输出了k个数,问再取几个数才能使取出的所有数的个数 ...
- 新人--使用layui做的表格,复杂表头,固定列,操作单元格数据计算,点击查询重载表格,可以选择部分或者全部导出
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- --without-v4l ,make clean, 重新make即可。
--without-v4l ,make clean, 重新make 2011-02-27 17:38 Error: X11 support required for GUI compilation
- 猫狗分类--Tensorflow实现
贴一张自己画的思维导图 数据集准备 kaggle猫狗大战数据集(训练),微软的不需要FQ 12500张cat 12500张dog 生成图片路径和标签的List step1:获取D:/Study/Py ...
- C# 实现自定义的USB设备与上位机进行通信(上位机部分)
因为以前没用过USB,对USB也不了解,于是上网查了很多资料,不过网上的资料都是零零散散,不清不楚的,于是我自己总结了一下,下面几个链接是网上这么多零散资料里,我觉得比较有参考意义的. USB设备连接 ...
- nginx与tomcat搭建集群,负载均衡
--------------------------------------------------- 搭建环境(在桌面上即可完成测试) 先准备2个tomcat服务器 解压tomcat压缩包 得到 把 ...
- snmp--CentOS安装Net-SNMP小计
http://blog.csdn.net/tmpbook/article/details/39620549