传送门 点我
推销 点我
题意
有一个直上直下的电梯,每一个人想要从 楼到
楼去,问最少要多少时间?
思路
这个电梯是直上直下的,每一次都必须从 到
再回到
。
特别的,在时间 时,电梯已经到了
层。
设这栋楼有 层,我们要从
层到
层去,在
的时间等候。
令 ,也就是电梯来回一趟所需的时间。
针对于 的情况:
一共需要用 的时间跑完所有完整来回,再加上剩下的时间
。此时有两种情况:
- 当
时,加上
。
- 当
时,不做处理。
针对于 的情况:
一共需要用 的时间跑完所有完整来回,再加上剩下的时间
。此时有两种情况:
- 当
时,加上
。
- 当
时,不做处理。
针对于 的情况:
所用时间即为 。
Code
#include<bits/stdc++.h>
using namespace std;
int T,n,x,y,z;
int main(){
scanf("%d%d",&T,&n);int m=n*2-2;
while (T--){
scanf("%d%d%d",&x,&y,&z);
if (x>y) printf("%d\n",z/m*m+n*2-y-1+((z%m>n*2-x-1)?m:0));
else if (x<y) printf("%d\n",z/m*m+y-1+((z%m>=x)?m:0));
else printf("%d\n",z);
}
return 0;
}