思路:贪心。题目强调了最小化最大值这个要求,不知道有没有同学用二分答案呢?但你仔细分析一下可以发现,这题不具备单调性,比如钱越多,越怎么样?没有单调性是用不了二分的。考虑暴力,直接全排列n个大臣,然后再一个一个算,那么时间复杂度就来到了惊人的,那肯定过不了。
所以,正确的解法是贪心。首先第一直觉来说:越小,
越大,我们倾向于放在后面,那感觉贪心和排序有关。然后我就开始猜了,试了下用直接、
、
、
、
、
来进行排序贪心,最后发现
贪心是对的。接着用前缀乘积算一遍结果,其中的最大值就是答案
代码:
import sys
input = lambda: sys.stdin.readline().strip()
import math
inf = 10 ** 18
def I():
return input()
def II():
return int(input())
def MII():
return map(int, input().split())
def GMI():
return map(lambda x: int(x) - 1, input().split())
def LI():
return input().split()
def LII():
return list(map(int, input().split()))
def LFI():
return list(map(float, input().split()))
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))
'''
'''
def solve():
n = II()
a0, b0 = MII()
a = [LII() for _ in range(n)]
a.sort(key=lambda x: x[0] * x[1])
ans = 0
proc = a0
for x, y in a:
ans = fmax(ans, proc // y)
proc *= x
print(ans)
t = 1
# t = II()
for _ in range(t):
solve()

京公网安备 11010502036488号