3 条题解

  • 0
    @ 2025-11-15 10:55:24

    题目是求通关等级的最小等级 二分答案加贪心即可 排序贪心最小值 二分答案求得符合条件等级中的最小值

    def main():
        import sys
        n = int(input())
        data = list(map(int, sys.stdin.readline().strip().split()))
        data.sort()
      #检查是否可以过关
        def k(x):
            total = 0
            for i in data:
                if x >= i:
                    x += 10
                    total += 1 
            if total == n:
                return True
            else:
                return False
    
        left = 1
        right = max(data)
        ans = 0
        while left <= right:
            mid = (left + right) // 2
            if k(mid):
              #可以过关缩短右边界 均值向左侧接近 使mid更小
                right = mid - 1
              #存储最优解 防止最后mid不是答案的情况
                ans = mid
              #无法过关left向右侧逼近 增大mid值
            else:
                left = mid + 1
              #向上取整
        print((ans + 9) // 10)
    if __name__ == "__main__":
        main()
    
    #无注释版本:
    
    ```python
    def main():
        import sys
        n = int(input())
        data = list(map(int, sys.stdin.readline().strip().split()))
        data.sort()
        def k(x):
            total = 0
            for i in data:
                if x >= i:
                    x += 10
                    total += 1 
            if total == n:
                return True
            else:
                return False
    
        left = 1
        right = max(data)
        ans = 0
        while left <= right:
            mid = (left + right) // 2
            if k(mid):
                right = mid - 1
                ans = mid
            else:
                left = mid + 1
        print((ans + 9) // 10)
    if __name__ == "__main__":
        main()
    
    

    信息

    ID
    1128
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    164
    已通过
    26
    上传者