4 条题解
-
1
import math # 读取输入的第一行,站点数量 n 和每升油可以行驶的距离 d n, d = map(int, input().split()) # 初始化 v 和 a 数组,长度是站点数 n + 1(因为索引从1开始使用),初始化为0 v = [0] * (n + 1) a = [0] * (n + 1) # 读取输入的第二行,站点间的距离 t1 = list(map(int, input().split())) # 读取输入的第三行,各站点的油价 t2 = list(map(int, input().split())) # 填充 v 数组,v[i] 表示从站点 1 到站点 i 的总距离 for i in range(1, n): v[i] = t1[i - 1] # 计算从站点 1 到每个站点的累积距离 for i in range(1, n): v[i] = v[i - 1] + v[i] # 填充 a 数组,a[i] 表示第 i 个站点的油价 for i in range(1, n + 1): a[i] = t2[i - 1] # mi[i] 表示从站点 1 到站点 i 的最低油价 mi = [0] * (n + 1) mi[0] = a[1] # 初始化第一个站点的油价 # 计算每个站点的最低油价 for i in range(1, n + 1): mi[i] = min(a[i], mi[i - 1]) # 初始化当前油量和总花费 now = 0 ans = 0 # 遍历每个站点 for i in range(1, n + 1): # 如果当前油量比到达下一个站点所需的距离多,则无需加油 if now > v[i]: continue # 计算到达下一个站点最少需要的油量 must = math.ceil((v[i] - now) * 1.0 / d) # 计算在当前站点加这么多油需要的费用 ans += must * mi[i] # 更新当前油量 now += must * d # 输出最小总花费 print(ans)
信息
- ID
- 935
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 326
- 已通过
- 49
- 上传者