题解 | 魔导模块的效能迭代
魔导模块的效能迭代
https://www.nowcoder.com/practice/e6a6c0b188a246829c10cf388ac3f73e
import sys
import math
from collections import defaultdict, Counter, deque
import heapq
# 总和最小
n, m = list(map(int, input().split()))
a = list(map(int, input().split()))
b = list(map(int, input().split()))
# 优化差值最大的
# 堆吗?
sub = []
for i in range(n):
mn = min(a[i] - math.ceil(a[i] / 2), a[i] - b[i])
heapq.heappush(sub, (-mn, i))
sm = sum(a)
while m > 0:
# print(sub)
sb, i = heapq.heappop(sub)
sb = -sb
sm -= sb
a[i] = b[i] if sb == a[i] - b[i] else math.ceil(a[i] / 2)
mn = min(a[i] - math.ceil(a[i] / 2), a[i] - b[i])
heapq.heappush(sub, (-mn, i))
m -= 1
print(sm)
查看13道真题和解析