• 牛客网 网易2020.8.8笔试


    有三种难度的题目分别为Easy/Medium/Hard,现在你总共有E+EM+M+MH+H道题,各个字符串的含义如下:
    某个公众号总结在这里

    E表示有E道题目难度为Easy
    EM表示有EM道题目难度为Easy或者Medium
    M表示有M道题目难度为Medium
    MH表示有MH道题目难度为Medium或者Hard
    H表示有H道题目难度为Hard
    你要用这些题目出尽量多的模拟赛,为了保证题目质量且含有一定的区分量,每场模拟赛需要包含Easy Medium Hard三种难度的题目各一道,每道题目至多只能出现在一场比赛中。求你最多能出多少场模拟赛

    输入描述
    一行五个整数,E,EM,M,MH,H
    0 <= E+EM+M+MH+H <= 10^18

    输出描述
    输出你最多能出多少场模拟赛

    示例1
    输入
    2 2 1 2 2

    输出
    3

    说明
    三组分别是
    E + EM + H
    E + MH + H
    EM + M + MH

    思路:二分查找,限定值mid后判断该值是不是可以满足

    先对E和H进行处理,补到mid的大小,然后在计算剩下的M和MH、EM的和能不能达到mid

    def main():
        [E, EM, M, MH, H] = list(map(int, input().split()))
    
        max_val = (E + EM + M + MH + H) // 3
    
        def find(i, E, EM, M, MH, H):
            if E < i:
                cur = min(i - E, EM)
                E += cur
                EM -= cur
            if H < i:
                cur = min(i - H, MH)
                H += cur
                MH -= cur
            if M + EM + MH >= i and E >= i and H >= i:
                return True
            return False
    
        res = 0
        left, right = 0, max_val
        while left <= right:
            mid = (left + right) // 2
            if find(mid, E, EM, M, MH, H):
                left = mid + 1
                res = max(res, mid)
            else:
                right = mid - 1
        print(res)
    main()
    












    种一棵树最好的时间是十年前,其次是现在。
  • 相关阅读:
    SQL 去重 DISTINCT 语法
    urllib2 urllib urllib3的区别联系
    urllib库中常见的类和方法
    python模块之json pickle
    python os模块
    python的常见内置模块之-----time
    列表,队列,栈,链表的内存模型
    open函数
    session和cookie
    随笔小skill
  • 原文地址:https://www.cnblogs.com/islch/p/13460819.html
Copyright © 2020-2023  润新知