b_wy_出模拟赛(二分)

尽量多的模拟赛,每场模拟赛需要包含Easy,Medium,Hard 三种难度的题目各一道。求你最多能出多少场模拟赛。

思路:套路
···py
"""
输入:2 2 1 2 2
输出:3
三组分别是
E + EM + H
E + MH + H
EM + M + MH
"""
def chk(c,E,EM,M,MH,H):
if E<c: #少了Easy
need=c-E
if EM<need: return False
EM-=need
if H<c: #少了Hard
need=c-H
if MH<need: return False
MH-=need
#E、H都足够了
return True if EM+M+MH>=c else False
A=list(map(int, input().split()))
l,r,ans=0,sum(A),0
while l<=r: #用<=是因为l=r时也有可能合法
m=(l+r)//2
if chk(m,A[0],A[1],A[2],A[3],A[4]): l,ans=m+1,m
else: r=m-1
print(int(ans))

posted @ 2021-02-17 21:21  童年の波鞋  阅读(75)  评论(0编辑  收藏  举报