CF 1895A 学习笔记 分类讨论

A. Treasure Chest

time limit per test

2 seconds

memory limit per test

512 megabytes

input

standard input

output

standard output

Monocarp has found a treasure map. The map represents the treasure location as an OX axis. Monocarp is at 00, the treasure chest is at �, the key to the chest is at �.

Obviously, Monocarp wants to open the chest. He can perform the following actions:

  • go 11 to the left or 11 to the right (spending 11 second);
  • pick the key or the chest up if he is in the same point as that object (spending 00 seconds);
  • put the chest down in his current point (spending 00 seconds);
  • open the chest if he's in the same point as the chest and has picked the key up (spending 00 seconds).

Monocarp can carry the chest, but the chest is pretty heavy. He knows that he can carry it for at most � seconds in total (putting it down and picking it back up doesn't reset his stamina).

What's the smallest time required for Monocarp to open the chest?

Input

The first line contains a single integer � (1≤≤1001≤�≤100) — the number of testcases.

The only line of each testcase contains three integers ,�,� and � (1≤,≤1001≤�,�≤100; ≠�≠�; 0≤≤1000≤�≤100) — the initial point of the chest, the point where the key is located, and the maximum time Monocarp can carry the chest for.

Output

For each testcase, print a single integer — the smallest time required for Monocarp to open the chest.

Example

input

Copy

 
  

3

5 7 2

10 5 0

5 8 2

output

Copy

7
10
9

Note

In the first testcase, Monocarp can open the chest in 77 seconds with the following sequence of moves:

  • go 55 times to the right (55 seconds);
  • pick up the chest (00 seconds);
  • go 22 times to the right (22 seconds);
  • pick up the key (00 seconds);
  • put the chest down (00 seconds);
  • open the chest (00 seconds).

He only carries the chest for 22 seconds, which he has the stamina for.

In the second testcase, Monocarp can pick up the key on his way to the chest.

In the third testcase, Monocarp can't use the strategy from the first testcase because he would have to carry the chest for 33 seconds, while he only has the stamina for 22 seconds. Thus, he carries the chest to 77, puts it down, moves 11 to the right to pick up the key and returns 11 left to open the chest.

链接

传送门

代码

//axis 轴
//chest 箱子
//stamina 耐力
//k 表示这个人能坚持多少秒拿着这个箱子
//x 表示箱子的地点
//y 表示钥匙的地点

#include
using namespace std;

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int x,y,k;
		scanf("%d%d%d",&x,&y,&k);
		if(xy)	printf("%d\n",y);
			else
			{
				int ans=x+k;
				int temp=y-ans;
				temp*=2;
				ans+=temp;
				printf("%d\n",ans);
			}
		}
		else
		{
			printf("%d\n",x);
		}
	}
	return 0;
}

总结

1.分类讨论,分成两种情况,第一种情况,箱子在钥匙左边,第二种情况,钥匙在箱子左边,如果是第二种情况,直接输出箱子的坐标即可

2.如果是第一种情况,主角可以背着箱子往右边走,但是最多走k个单位(坚持k秒,每秒一个单位) ,如果x+k可以刚好到达钥匙所在的位置,或者超过钥匙所在的位置,直接输出钥匙的坐标即可

3.如果x+k不能到达钥匙所在的位置,就说明主角走到x+k位置的时候,要走去钥匙所在位置,然后再折返回来。[y-(x+k)]*2+(x+k)就是答案

4.仔细慢慢读题,把题读懂非常重要

 

你可能感兴趣的:(Codeforces,学习,笔记,算法)