题意:有n个车站,每个车站都有个到达时间、出发时间和到该点前的延迟时间。现让你推算按顺序到达第n个车站所需的时间为多少。

思路:
挺简单一题,就是题意有点点绕。
模拟注意一下每次出发的时间最小休息时间(b[i]-a[i])/2上取整的关系处理即可,就是别忘了两点之间本来就需要花费的时间(b[i]-a[i-1])和到达第i个点前还有个另外的延迟时间c[i]。
代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] a = new int[200];
int[] b = new int[200];
int[] c = new int[200];
Scanner input = new Scanner(System.in);
int t = input.nextInt();
while(t>0) {
t --;
int n = input.nextInt();
for (int i = 1; i <= n; i++) {
a[i] = input.nextInt();
b[i] = input.nextInt(); //输入每个节点的到达和出发时间
}
for (int i = 1; i <= n; i++)
c[i] = input.nextInt(); //输入每个节点对应的延迟时间
int ans = 0;
for (int i = 1; i <= n; i++) {
ans += c[i] + a[i] - b[i - 1]; //答案需要加上上一个节点到该节点的路上的耗时间和延迟时间
if (i == n) break;
double x = Math.ceil((b[i] * 1.0 - a[i] * 1.0) / 2.0); //计算最少休息时间
if (b[i] - ans < x) ans += x; //如果休息时间超过了出发时间
else ans = b[i]; //否则一直休息到出发时间为止
}
System.out.println(ans);
}
}
}

本文介绍了一道关于模拟算法的问题,通过给定的车站到达时间、出发时间和额外延迟时间,来计算按顺序到达最后一个车站所需的总时间。文章详细解释了如何处理每个车站之间的最短休息时间以及必要的行驶时间。

2435

被折叠的 条评论
为什么被折叠?



