Codeforces Round #707 (Div. 2) A - Alexey and Train

原题链接

A - Alexey and Train

题面

Alexey is travelling on a train. Unfortunately, due to the bad weather, the train moves slower that it should!

Alexey took the train at the railroad terminal. Let’s say that the train starts from the terminal at the moment 0. Also, let’s say that the train will visit n stations numbered from 1 to n along its way, and that Alexey destination is the station n.

Alexey learned from the train schedule n integer pairs (ai,bi) where ai is the expected time of train’s arrival at the i-th station and bi is the expected time of departure.

Also, using all information he has, Alexey was able to calculate n integers tm1,tm2,…,tmn where tmi is the extra time the train need to travel from the station i−1 to the station i. Formally, the train needs exactly ai−bi−1+tmi time to travel from station i−1 to station i (if i=1 then b0 is the moment the train leave the terminal, and it’s equal to 0).

The train leaves the station i, if both conditions are met:

it’s on the station for at least ⌈bi−ai2⌉ units of time (division with ceiling);
current time ≥bi.
Since Alexey spent all his energy on prediction of time delays, help him to calculate the time of arrival at the station n.

Input

The first line contains one integer t (1≤t≤100) — the number of test cases.

The first line of each test case contains the single integer n (1≤n≤100) — the number of stations.

Next n lines contain two integers each: ai and bi (1≤ai<bi≤106). It’s guaranteed that bi<ai+1.

Next line contains n integers tm1,tm2,…,tmn (0≤tmi≤106).

Output

For each test case, print one integer — the time of Alexey’s arrival at the last station.

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

Note

In the first test case, Alexey arrives at station 1 without any delay at the moment a1=2 (since tm1=0). After that, he departs at moment b1=4. Finally, he arrives at station 2 with tm2=2 extra time, or at the moment 12.

In the second test case, Alexey arrives at the first station with tm1=1 extra time, or at moment 2. The train, from one side, should stay at the station at least ⌈b1−a12⌉=2 units of time and from the other side should depart not earlier than at moment b1=4. As a result, the trains departs right at the moment 4.

Using the same logic, we can figure out that the train arrives at the second station at the moment 9 and departs at the moment 10; at the third station: arrives at 14 and departs at 15; at the fourth: arrives at 22 and departs at 23. And, finally, arrives at the fifth station at 32.

题意

题目中总共涉及到3个时间差,分别是 列车理论上行驶的时间tm 出现特殊情况导致的额外时间la 列车停留在站台上的理论时间stop1
还有的就是列车出发时需要满足两个条件:停留站台的时间应大于等于理论停留时间stop 出发时间大于或等于理论出发时间b

思路

根据题意模拟好列车形式的状态,最后求出到达最后站点的时间,先提前算出所有类型的时间差

代码如下

#include <iostream>
 
using namespace std;
const int N = 110;
int a[N],b[N],la[N];//到达时间 出发时间 额外时间
int stop[N],tm[N];//满足的停留时间 和 理论行驶时间
int main(void)
{
    
    int t;
    
    cin >> t;
    while(t--)
    {
        int n;
        cin >> n;
        b[0] = 0;
        for(int i=1;i<=n;i++)
        {
            cin >> a[i] >> b[i];
            if((b[i]-a[i])%2==0)stop[i] = (b[i]-a[i])/2;
            else stop[i] = (b[i]-a[i])/2 + 1;
            
            tm[i] = a[i] - b[i-1];
        }
        for(int i=1;i<=n;i++)cin >> la[i];
        int sum = 0;//最终到达时间
        for(int i=1;i<n;i++)//这里模拟n站台之前的到达时间
        {
            sum += la[i] + tm[i];
            sum += stop[i];
            
            if(sum<b[i]) sum = b[i];
        }
        sum += la[n] + tm[n];//最后求出最后站台的到达时间
        cout << sum << endl;
    }
    
    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值