算法分析
对于两个相邻的时间点 $d_{i-1}$ 和 $d_i$,是连续订阅这一整段时间还是分开订阅?分类讨论可知:连续订阅 $[d_{i-1}, d_i]$ 这段时间区间,则花费金额为:$d_{i} - d_{i-1} + k+1$;而分开订阅,则花费金额为 $2(k+1)$。接下来,需要比较哪两个量,也就不言而喻了。
实际上,这一讨论可以延伸至时间区间任意长的情形,因为连续的时间区间是可以进行合并的。
Python 代码
n, k = map(int, input().split())
d = list(map(int, input().split()))
ans = k+1
for i in range(1, n):
ans += min(d[i]-d[i-1], k+1)
print(ans)