题解 | [CQOI2010]扑克牌

[CQOI2010]扑克牌

https://www.nowcoder.com/practice/b77ff162bbab446993913fd684489cde

def judge(x, a, n, m):
    # 判断能否组成 x 套牌
    need = 0
    for i in range(n):
        if x > a[i]:
            need += x - a[i]  # 需要用 Joker 补的张数
    return need <= m and need <= x  # Joker 不够或超过限制则不行

def max_full_sets(n, m, a):
    # 二分查找最大可行的套数
    left = 0
    right = 10**9
    while left <= right:
        mid = (left + right) // 2
        if judge(mid, a, n, m):
            left = mid + 1
        else:
            right = mid - 1
    return right

if __name__ == "__main__":
    n, m = map(int, input().split()) 
    a = list(map(int, input().split()))
    print(max_full_sets(n, m, a))

全部评论

相关推荐

12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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