OD 算法题 B卷【路灯照明II】
文章目录
- 路灯照明II
路灯照明II
- 在一条笔直的公路上安装了N个路灯,从位置0开始安装,间距固定为100米;
- 每个路灯都有自己的照明半径,计算第一个路灯和最后一个路灯之间,无法照明的区间长度和;
输入描述:
第一行输入路灯个数N;
第二行输入路灯照明半径
输出描述:
第一个路灯和最后一个路灯之间,无法照明的区间长度和;
示例1
输入:
2
50 50
输出:
0
示例2
输入:
4
50 70 20 70
输出:
20
python实现:
- 区间合并问题,计算区间,区间排序
n = int(input().strip())
arr = list(map(int, input().strip().split()))
internal = 100# 计算每个路灯的覆盖区间
cover_area = []
for i in range(n):if i == 0:start = 0end = arr[i]elif i != n - 1:start = i * internal - arr[i]end = i * internal + arr[i]else:start = i * internal - arr[i]end = i * internalcover_area.append([start, end])# 按照每个区间的起始值升序排序
cover_area.sort(key=lambda i:i[0])# 计算阴影区域
result = 0
for i in range(1, n, 1):if cover_area[i][0] <= cover_area[i-1][1]:# 无阴影continueresult += cover_area[i][0] - cover_area[i-1][1]print(result)