Math - Uva 11300 Spreading the Wealth
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的更多相关文章
- 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个人,每个人手中有a[i]个数的金币,每个人能给其左右相邻的人金币,现在要求你安排传递金币的方案,使得每个人 ...
- 数学/思维 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个人,每个人有一定数量的金币,金币的总数能被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 (数学推导 中位数)
Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...
- [ACM_几何] UVA 11300 Spreading the Wealth [分金币 左右给 最终相等 方程组 中位数]
Problem A Communist regime is trying to redistribute wealth in a village. They have have decided to ...
- UVa 11300 Spreading the Wealth 分金币
圆桌旁坐着 n 个人,每个人都有一定数量的金币,金币总数能够被 n 整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等.你的任务是求出被转手的金币数量的最小值,比如 n = 4, ...
随机推荐
- (剑指Offer)面试题40:数组中只出现一次的数字
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 思路: 这道题的简单版本是除了一个数字之外,其他数字都出现了两次,这个很简单,将所有的数异或一遍就 ...
- honeyd蜜罐配置和web监听脚本
Honeyd的安装和配置 Honeyd软件依赖于下面几个库及arpd工具: (1)Libevent:是一个非同步事件通知的函数库. 通过使用 libevent,开发者能够设定某些事件发生时所运行的函数 ...
- cocos2d-x CCScrollView 源代码分析
版本号源代码来自2.x,转载请注明 另我实现了能够循环的版本号http://blog.csdn.net/u011225840/article/details/31354703 1.继承树结构 能够看出 ...
- PHP文件系统处理
文件系统概述 文件类型 PHP是以UNIX的文件系统为模型的,因此Windows系统中我们只能获得"file"."dir"或者"unk ...
- sql server 操作xml例子
sql server 操作xml例子 /* sql xml 入门: --by jinjazz --http://blog.csdn.net/jinjazz 1.xml: 能认识元素.属性和值 2.xp ...
- JavaWeb 绝对路径与相对路径
JavaWeb 绝对路径与相对路径 CreateTime--2018年4月14日16:51:19 Author:Marydon 8.1 绝对路径 web项目不可能使用绝对路径,因为: 以文件的引用 ...
- Python-线程的生命周期
线程的生命周期 所谓的xx生命周期,其实就是某对象的包含产生和销毁的一张状态图.线程的生命周期如下图所示: 各状态的说明如下: New新建.新创建的线程经过初始化后,进入Runnable状态. Run ...
- JAVA编译器常量
编译器常量的特点就是:它的值在编译期就可以确定.比如: final int i = 5; 再傻的编译器也能在编译时看出它的值是5,不需要到运行时.对于运行时常量,它的值虽然在运行时初始化后不再发生变化 ...
- SQL server 2008定期的备份数据库及删除job
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...
- Vue中正确使用jQuery的方法
题主Vue小白,入门demo时想在其中使用jQuery(当然可能是不推荐的做法哈,毕竟俩儿的风格不一样,但万一你就需要呢 _^ ^_),结果遇到问题,最终倒腾解决. 编译报错:$ is undefin ...