3 条题解
-
0
题目是求通关等级的最小等级 二分答案加贪心即可 排序贪心最小值 二分答案求得符合条件等级中的最小值
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
- 上传者