【乘积排序】 国王游戏

题解

国王有两个数,每个大臣有两个数,国王始终站在队伍的最前面,每个大臣获得的奖励是他前面所有人左手上的乘积除以他右手上的数,请安排大臣的顺序,使得奖励最大的大臣获得的奖励最小
\(1\leq n\leq 10000\)
\(1\leq a,b \leq 10000\)

直接将所有大臣按左右手上的数的乘积从小到大排序,得到的序列就是最优排队方案。
时间复杂度
排序的时间复杂度是 \(O(nlogn)\)
这道题目的时间复杂度瓶颈在高精度计算上,最坏情况下所有 \(A_{i}=9999\),则前 i 个数的乘积大约是 \(4i\) 位,每次乘一个新的数就需要 \(4i\) 的计算量,总共的计算量是 \(O(n^{2})\)

Code


猜你喜欢

转载自www.cnblogs.com/hhyx/p/13167257.html