题目大意:
给你一个火车的时间表(包括预计到达时间ai,预计出发时间bi),再给你一个组数,表示每站到达的延迟时间。火车出发需要满足两个条件。1.最少等待(预计出发时间-预计到达时间)/2的时间(向上取整)。
2.出发时间>=预计出发时间
输入格式
第一行包含一个整数t(1≤t≤100)-测试用例的数量。每个测试用例的第一行包含单个整数n(1≤n≤100)-站的数量。
接下来的n行每行包含两个整数:ai和bi(1≤ai<bi≤106)。可以保证bi<ai+1。
下一行包含n个整数tm1、tm2、…。、TMN(0≤TMI≤106)。
输出格式
对于每个测试用例,打印一个整数-Alexey到达最后一个站点的时间。
Example
input
2
2
2 4
10 12
0 2
5
1 4
7 8
9 10
13 15
19 20
1 2 3 4 5
output
12
32
模拟题(阅读理解题 ),直接模拟即可
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[101],b[101];
int t[101];
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,time=0;
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d %d",&a[i],&b[i]);
for(int i=1;i<=n;++i)
scanf("%d",&t[i]);
time=a[1]+t[1];
for(int i=2;i<=n;++i){
if(b[i-1]-time>(b[i-1]-a[i-1]+1)/2)time=b[i-1];
else time+=(b[i-1]-a[i-1]+1)/2;
time+=a[i]-b[i-1]+t[i];
}
printf("%d\n",time);
}
return 0;
}