国王游戏(贪心)
来源:互联网 发布:乒乓球直播软件 编辑:程序博客网 时间:2024/05/17 04:42
问题描述:
恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右 手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n位大臣排 成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每 位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右 手上的数,然后向下取整得到的结果。 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序, 使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。
将左手与右手的乘积从小到大排序,然后计算求最大值即可。(需要高精度)
证明:
1)知道,如果相邻的两个人交换位置,只会影响到这两个人的值,不会影响他人
2)假设相邻的两个人i, i + 1。设A[i] * B[i] <= A[i + 1] * B[i + 1],i之前所有人的左手乘积为S。
则,ans1 = max{S / B[i], S * A[i] / B[i + 1]}
若交换
则,ans2 = max{S / B[i + 1], S * A[i + 1] / B[i]}
因为,A[i] * B[i] <= A[i + 1] * B[i + 1]
所以,S * A[i] / B[i + 1] <= S * A[i + 1] / B[i]
又因为,S / B[i + 1] <= S * A[i] / B[i + 1]
所以,ans2 = S * A[i + 1] / B[i]
ans1 = max{S / B[i], S * A[i] / B[i + 1]}
所以,ans1 <= ans2
证毕
至于高精度:
由题意知,0 < a,b < 10000,所以用10000进制的高精度进行运算就可以了
- 国王游戏(贪心)
- 国王游戏(贪心+模拟)
- 洛谷P1080:国王游戏 (贪心+高精度)
- 【noip】国王游戏 贪心 高精度
- codevs 1198 国王游戏 贪心
- NOIP 2012 国王游戏 贪心 高精度 (COGS 1263)
- NOIP 2012 T2 国王游戏 (贪心+高精)
- Noip2012 Day1 T2 国王游戏(贪心+高精度)
- 【贪心+高精度】NOIP2012D1T2国王游戏Codevs1198
- [NOIP 2012]国王游戏 高精度+贪心
- NOIP 国王游戏 codevs1198 贪心+高精度
- CODE[VS] 1198【NOIP2012】 国王游戏(贪心
- 【noip 2012】国王游戏 贪心+高精度
- 普及练习场 贪心 国王游戏
- 国王游戏(50)
- 【luogu1080】国王游戏(高精度)
- 【jzoj3100】【NOIP2012提高组】【国王游戏】【贪心】【高精度】
- [NOIP2012]洛谷[P1080]国王游戏 贪心+高精
- iOS-78-解决AFNetWorking NSParameterAssert(URLString)为空问题
- js实现分页
- poj 1651 Multiplication Puzzle
- Chunkize warning while installing gensim 疑难杂症
- Show Me the Money
- 国王游戏(贪心)
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林
- 魔戒(四维bfs)
- Angular2 使用 Observables From Other Sources
- WKWebView替换UIWebView
- 今日头条项目各种问题
- Mysql服务器丢失后的修复
- CodeForces
- NYOJ 36 最长公共子序列