题目
服务器有三种运行状态:空载、单任务、多任务,每个时间片的能耗的分别为1、3、4;
每个任务由起始时间片和结束时间片定义运行时间:
如果一个时间片只有一个任务需要执行,则服务器处于单任务状态;
如果一个时间片有多个任务需要执行,则服务器处于多任务状态;
给定一个任务列表,请计算出从第一个任务开始,到所有任务结束,服务器的总能耗。
思路
使用差分数组进行求解,先构建差分数组,再还原为真实数组,遍历时间片即可
代码
num = int(input())
dif = [0] * 100001
min_value,max_value = 10000,-1
for i in range(num):
l,r = map(int,input().split(" "))
min_value = min(min_value,l)
max_value = max(max_value,r)
dif[l]+=1
dif[r+1]-=1
time = [0] * (max_value+1)
time[0] = dif[0]
for i in range(1,max_value+1):
time[i] += time[i-1]+dif[i]
ans = 0
for i in range(min_value,max_value+1):
if time[i]==0:
ans += 1
elif time[i]==1:
ans += 3
else:
ans += 4
print(ans)
# 测试1
# 3
# 4 8
# 1 6
# 2 9
# 测试2
# 2
# 2 5
# 8 9