这道题和负载平衡问题是同一道题, 如果 $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_数学推倒 + 思维的更多相关文章

  1. 数学/思维 UVA 11300 Spreading the Wealth

    题目传送门 /* 假设x1为1号给n号的金币数(逆时针),下面类似 a[1] - x1 + x2 = m(平均数) 得x2 = x1 + m - a[1] = x1 - c1; //规定c1 = a[ ...

  2. UVA.11300 Spreading the Wealth (思维题 中位数模型)

    UVA.11300 Spreading the Wealth (思维题) 题意分析 现给出n个人,每个人手中有a[i]个数的金币,每个人能给其左右相邻的人金币,现在要求你安排传递金币的方案,使得每个人 ...

  3. UVa 11300 Spreading the Wealth(有钱同使)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: "Times New ...

  4. uva 11300 - Spreading the Wealth(数论)

    题目链接:uva 11300 - Spreading the Wealth 题目大意:有n个人坐在圆桌旁,每个人有一定的金币,金币的总数可以被n整除,现在每个人可以给左右的人一些金币,使得每个人手上的 ...

  5. UVA - 11300 Spreading the Wealth(数学题)

    UVA - 11300 Spreading the Wealth [题目描述] 圆桌旁边坐着n个人,每个人有一定数量的金币,金币的总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金 ...

  6. UVA 11300 Spreading the Wealth (数学推导 中位数)

    Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...

  7. 【思维】UVA 11300 Spreading the Wealth

    题目大意 vjudge链接 有n个人围圆桌而坐,每个人有Ai个金币,每个人可以给左右相邻的人一些金币. 若使得最终所有人金币数相等,求最小金币转移数. 数据范围 n<1000001 样例输入 3 ...

  8. Uva 11300 Spreading the Wealth(递推,中位数)

    Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...

  9. Math - Uva 11300 Spreading the Wealth

    Spreading the Wealth Problem's Link ---------------------------------------------------------------- ...

随机推荐

  1. 解决phpstudy mysql 启动不了的问题

    1.端口监测 查看3306 的端口是否被占用,如占用,停止进程 2.服务没有启动.因为学习python 我把phpstudy的mysql升级到了mysql8.0. sc delete mysql  删 ...

  2. PHP 一句话木马

    eval 函数 eval() 函数把字符串按照 PHP 代码来计算 该字符串必须是合法的 PHP 代码,且必须以分号结尾 如果没有在代码字符串中调用 return 语句,则返回 NULL.如果代码中存 ...

  3. AOJ 2224 Save your cats( 最小生成树 )

    链接:传送门 题意:有个女巫把猫全部抓走放在一个由 n 个木桩(xi,yi),m 个篱笆(起点终点木桩的编号)围成的法术领域内,我们必须用圣水才能将篱笆打开,然而圣水非常贵,所以我们尽量想降低花费来解 ...

  4. 最快理解 - IO多路复用:select / poll / epoll 的区别.

    目录 第一个解决方案(多线程) 第二个解决方案(select) 第三个解决方案(poll) 最终解决方案(epoll) 客栈遇到的问题 从开始学习编程后,我就想开一个 Hello World 餐厅,由 ...

  5. properties 乱码问题

    File --> Others Settings --> Default Settings

  6. 这个过人真是NB

  7. bzoj 3236: [Ahoi2013]作业(缺线段树)

    3236: [Ahoi2013]作业 Time Limit: 100 Sec  Memory Limit: 512 MBSubmit: 1744  Solved: 702[Submit][Status ...

  8. 遗传奥秘的伟大揭秘者:J.Watson

    J.Watson的近照: 人们公认,揭秘生命体的遗传奥秘(DNA)是二十世纪最伟大的科技成果之中的一个,或许就是人类最伟大的科技进步(而不是"之中的一个"). 上世纪是人类做出伟大 ...

  9. windows2003安装

    产品密钥JCDPY-8M2V9-BR862-KH9XB-HJ3HMiis的i386文件夹http://pan.baidu.com/s/1dD0EY6twindows2003的iso映像http://p ...

  10. ios 中生成随机数

    ios 有如下三种随机数方法: 1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变        int i = rand() % 5; 2.    s ...