NC16561. [NOIP2012]国王的游戏
描述
输入描述
第一行包含一个整数 n ,表示大臣的人数。
第二行包含两个整数 a 和 b ,之间用一个空格隔开,分别表示国王左手和右手上的整数。
接下来 n 行,每行包含两个整数 a 和 b ,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。
输出描述
一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。
示例1
输入:
3 1 1 2 3 7 4 4 6
输出:
2
说明:
按 1 、 2 、 3 这样排列队伍,获得奖赏最多的大臣所获得金币数为 2 ;pypy3(pypy3.6.1) 解法, 执行用时: 73ms, 内存消耗: 19548K, 提交时间: 2020-05-17 18:10:02
n = int(input()) a, b = map(int, input().split()) d = [] for i in range(n): d.append(tuple(map(int, input().split()))) d.sort(key = lambda x : x[0] * x[1]) m = 0 for u in d: m = max(m, a // u[1]) a *= u[0] print(m)
Python3(3.9) 解法, 执行用时: 25ms, 内存消耗: 3028K, 提交时间: 2021-01-17 18:39:55
n=int(input()) a,b=map(int,input().split()) c=[] for i in range(n): d=list(map(int,input().split())) c.append(d) c.sort(key=lambda a:a[0]*a[1]) sum=0 for i in c: sum=max(sum,a//i[1]) a*=i[0] print(sum)
Python(2.7.3) 解法, 执行用时: 25ms, 内存消耗: 3008K, 提交时间: 2020-06-28 17:37:19
n=input() s,_=map(int,raw_input().split()) D=[] for i in range(n): x,y=map(int, raw_input().split()) D.append((x*y,x,y)) D.sort() z=0 for i in range(n): z=max(z,s/D[i][2]) s*=D[i][1] print z