社会服务
作为一名新时代青年,你决定从小事做起,服务这个社会。
在一条路的左右各有 nn 个老人,他们都想要到路的对面去放松然后再回来,但是他们都太懒而不想动,你则要搀扶他们过马路,搀扶一位老人过马路的时间是 tt,老人休息的时间是 xx,你单独穿越马路的时间也是 tt,一次只能扶一个老人。
因为你还要训练 OI,所以你希望在尽可能少的时间内完成这个任务。
输入格式
第一行一个整数 TT,表示共有 TT 组数据。
接下来 TT 行,一行三个整数 n,x,tn,x,t。
输出格式
对于每组数据,输出一行一个整数,表示你的答案。
输入数据 1
4
1 2 3
4 5 6
7 8 9
2 2 2
Copy
输出数据 1
14
96
252
16
Copy
样例 1 解释
对于最后一组样例,下面是它的一个最优方案,其中 x
代表你,数字代表老人,|
代表马路:
时间
0 x 1 2 | 3 4
2 2 | 3 4 1 x
4 x 3 2 | 4 1
6 3 | 4 1 2 x
8 x 4 3 | 1 2
10 4 | 1 2 3 x
12 x 1 4 | 2 3
14 1 | 2 3 4 x
16 x 2 1 | 3 4
Copy
数据范围
对于全部数据,1≤T≤1051≤T≤105,1≤n,x,t≤1091≤n,x,t≤109。
Subtask 编号 | 特殊限制 | 分数 |
---|---|---|
11 | T=3T=3,n,x,t≤5n,x,t≤5 | 2020 |
22 | T=3T=3,n,x,t≤103n,x,t≤103 | |
33 | 无特殊限制 | 6060 |
#include<bits/stdc++.h>
using namespace std;
long long n,x,t,tt,dd,qa=0;
string ss;
int main(){
map<string,long long> a;
cin>>tt;
for(long long i=1;i<=tt;i++){
cin>>n>>x>>t;
dd=4*n*t;
cout<<dd+max(qa,min(t+t+x-2*n*t,t+max(qa,t+x-2*n*t-t)))<<endl;
}
return 0;
}