差分法,Python3,优化后,5号测试点还是空间超了
查看原帖
差分法,Python3,优化后,5号测试点还是空间超了
662220
Sniper_Ghost楼主2022/2/3 22:21
# 代码1
n, p = [ int(t) for t in input().split() ]
a = [ int(t) for t in input().split() ]
a.insert(0, 0)
diff = [ 0 ] * (n + 2)
for i in range(1, n + 1) :
    diff[i] = a[i] - a[i - 1]
for i in range(p) :
    x, y, z = [ int(t) for t in input().split() ]
    diff[x] += z
    diff[y + 1] -= z
for i in range(1, n + 1) :
    a[i] = a[i - 1] + diff[i]
print(min(a[1 : ]))

# 代码2
n, p = input().split()
n = int(n)
p = int(p)
diff = [ int(t) for t in input().split() ]
diff.insert(0, 0)
diff.insert(len(diff), 0)
a = diff[0]
for i in range(1, n + 1) :
    b = diff[i]
    diff[i] = b - a
    a = b
for i in range(p) :
    x, y, z = input().split()
    diff[int(x)] += int(z)
    diff[int(y) + 1] -= int(z)
res = 1e5
temp = 0
for i in range(1, n + 1) :
    temp += diff[i]
    res = min(res, temp)
print(res)

代码1是优化前的,代码2是优化后的,存原始成绩的a数组不要了,只保留差分数组diff,还是爆了空间

2022/2/3 22:21
加载中...