题意:有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);
}
}
}