Spreading the Wealth

Problem's Link

----------------------------------------------------------------------------

Mean:

n个人围成一圈,每个人手里有Ai个金币,每个人可以给与他相邻的人一些金币,通过一系列的流转后,最后所有人的金币数相等。问整个过程最少需要流转多少金币?

analyse:

这是一道很有趣的数学题。

假设有4个人,按顺序编号1,2,3,4。假设1号给2号3枚金币,2号给1号5枚金币,这等价于2号给了1号2枚金币。

设:第i个人给了第i-1个人Xi枚金币(X1表示第1个人给第n个人X1枚金币),初始时每个人的金币数位Ai,最终每个人的金币数为M.

可得一下等式:

  • A1-X1+X2=M
  • A2-X2+X3=M
  • A3-X3+X4=M
  • A4-X4+X1=M

根据题意,我们最终要求的是:answer=|X1|+|X2|+|X3|+|X4|.

对上面的四个等式变形(用X1来表示其他等式):

  • X1 = X1
  • X2 = M-A1+X1 = X1+C1
  • X3 = M-A2+X2 = X1+C1+C2
  • X4 = M-A3+X3 = X1+C1+C2+C3

这儿的Ci=M-Ai,这个值是可以求出来的(看作是已知的)。

设D0=0,D1=C1,D2=C1+C2,D3=C1+C2+C3

再对上面的式子进行替换得到:

  • X1 = X1+D0
  • X2 = X1+D1
  • X3 = X1+D2
  • X4 = X1+D3

那么:

  • answer = |X1|+|X2|+|X3|+|X4|
  • = |X1+D0|+|X1+D1|+|X1+D2|+|X1+D3|

注意|a+b|这种形式,这在几何数学里表示的是数轴上a点到b点的距离。

D0,D1,D2,D3可以求出,现在的关键是如何求X1,求出X1后,X2,X3,X4都可以通过X1得出。

|X1+D0|+|X1+D1|+|X1+D2|+|X1+D3|这个式子对应的几何概念就是:数轴上有n个数,找一个数X1出来,使得X1到这n个数的距离之和最小。

到现在,问题就变得简单了,这个概念正是中位数的几何意义。

下面就是求出D[]数组,然后找到D[]的中位数,即X1,最后求出X2,X3,X4,累加即得answer.

Time complexity: O(N)

view code

);
           ;;
           ;);
           ;i<n;++i){
               ans+=Math.abs(mid-d[i]);
           }
           System.out.println(ans);
       }
   }
}

Math - Uva 11300 Spreading the Wealth的更多相关文章

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

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

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

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

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

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

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

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

  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 (数学推导 中位数)

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

  8. [ACM_几何] UVA 11300 Spreading the Wealth [分金币 左右给 最终相等 方程组 中位数]

    Problem A Communist regime is trying to redistribute wealth in a village. They have have decided to ...

  9. UVa 11300 Spreading the Wealth 分金币

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

随机推荐

  1. ganglia组播和单播

    ganglia快速开始向导(翻译自官方wiki) 发布于 2012 年 1 月 23 日 由 admin 2 comments发表评论   转自:http://cryinstall.com/?p=18 ...

  2. nDCG学习笔记

    参考:http://en.wikipedia.org/wiki/Discounted_cumulative_gain Normalized Discounted Cumulative Gain:一种对 ...

  3. hdu 4287Intelligent IME(简单hash)

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. POJ 2823 UESTCoj 1221 Sliding Window 单调队列 经典入门题

    题意:给出一个序列,求出每连续k个数字中最大的数和最小的数. 这是道单调队列裸题,直接写就行了. 本来用deque写出来后,发现在poj上硬是超时了,在discuss上看很多人也在抱怨超时的问题,据说 ...

  5. [Ext JS 4] 实战之 带week(星期)的日期选择控件

    前言 Ext JS 3 和 Ext JS 4中都有提供日期选择的组件(当然早期版本也有). 但是有一些日期选择的需求是要看到星期,就是日期中的哪一天是这一年的第几周. 遗憾的是Ext js 并没有提供 ...

  6. Eclipse自动编译NDK/JNI的三种方法

    一.Eclipse关联cygwin 1. 工程->右击选择Properties->选择Builders,在Builders中选择New创建一个Program 2. 参数配置 二.Eclip ...

  7. execve 系列函数

    exec系列函数(execl.execlp.execle.execv.execvp) 1带 p 的exec函数:execlp,execvp,表示第一个参数path不用输入完整路径,只有给出命令名即可, ...

  8. Zabbix Server和MPM(monitor for mysql)的高速部署

    1. 前言         zabbix作为开源免费的监控软件.其易于管理配置和可视化的视图.历史数据的定期维护.模板化的监控项目越来越受到广大IT运维人员的喜爱. 这里主要是总结了下Zabbix S ...

  9. JDBC 可更新和对更新敏感的结果集

    public class OtherApi {     /**      * @param args      * @throws SQLException      * @throws Interr ...

  10. CRNN中英文字符识别

    代码地址如下:http://www.demodashi.com/demo/13870.html 参考GitHub源码:https://github.com/YoungMiao/crnn 应demo大师 ...