题目
There is an infinite 2-dimensional grid. The robot stands in cell (0,0) and wants to reach cell (x,y). Here is a list of possible commands the robot can execute:
move north from cell (i,j) to (i,j+1);
move east from cell (i,j) to (i+1,j);
move south from cell (i,j) to (i,j−1);
move west from cell (i,j) to (i−1,j);
stay in cell (i,j).
The robot wants to reach cell (x,y) in as few commands as possible. However, he can’t execute the same command two or more times in a row.
What is the minimum number of commands required to reach (x,y) from (0,0)?
Input
The first line contains a single integer t (1≤t≤100) — the number of testcases.
Each of the next t lines contains two integers x and y (0≤x,y≤104) — the destination coordinates of the robot.
Output
For each testcase print a single integer — the minimum number of commands required for the robot to reach (x,y) from (0,0) if no command is allowed to be executed two or more times in a row.
题意
让机器人从(0, 0)到(x, y)最少需要多少步操作。有5中操作,以及要求不能进行连续的相同操作
题解
一直向右向下移动,无法交叉的用停留在原地来凑,可获得最小的移动步数
AC代码
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int t; scanf("%d", &t);
while(t--){
int x, y; scanf("%d%d", &x, &y);
int res = 0;
res = x +y + max(abs(x - y) - 1, 0);
printf("%d\n", res);
}
return 0;
}