国王的游戏

国王的游戏

https://ac.nowcoder.com/acm/problem/16561

思路:
贪心+快排
假设除了序列中相邻的两个大臣AB,其它大臣的位置都已经排好了。而AB的先后对前面和后面的结果都不会有影响,这里考虑A排前面最优的条件:左手数值用,右手数值用表示AB前面大臣左手数值的乘积。
1.A排前面时:,
2.B排前面时,,
3.
4.因为,所以不等式3需要满足,即
5.所以只要按每个大臣的左手乘右手值从小到大排序就能保证获得奖赏最多的大臣,所获奖赏尽可能的少。
6.再找全部人的最大值即可。
7.大数乘法+除法,,所以我被迫用py取巧。
Code:

n = int(input())
a,b = map(int, input().split())
ret = []
for i in range(n):
    temp = list(map(int, input().split()))
    ret.append([temp[0],temp[1]])
ret.sort(key = lambda x:x[0]*x[1])
ans = 0
for i in ret:
    if a//i[1] > ans:
        ans = a//i[1]
    a *= i[0]
print(ans)

为雨巨打call

全部评论
dalao,能问下问下这里吗。对于 100%的数据,有 1 ≤ n ≤1,000,0 < a,b < 10000 。这个最大的值不是1e7吗,为什么要用到大数的乘法和除法呢
1 回复 分享
发布于 2020-11-18 19:57

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11 二面2.12 三面 当天转hr面2.26 hr面,面完云证+录用评估2.27 offer
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务