CF1715A Crossmarket 题解

思路

根据题意以及下面给的样例解释,我们不难看出最优解一定是下面两种情况的一种:

情况1

情况2

即一个人直接抵达目标点的距离加上另一个人走行和列,即 \(n\)\(m\) 中较小的一个,加上一次传送的能量,即 \(n-1+m-1+\min{(n,m)}-1+1\),化简后为 \(n+m-2+\min{(n,m)}\)。注意当 \(n=1\)\(m=1\) 的时候要进行特判,这时答案为 \(0\)

代码

#include <bits/stdc++.h>
using namespace std;
int t, n, m;

int main() {
	scanf("%d", &t);

	while (t--) {
		scanf("%d%d", &n, &m);

		if (n == 1 && m == 1) {
			puts("0");
			continue;
		}

		if (n > m) {
			swap(n, m);
		}

		int ans = n - 1 + m - 1;
		ans += n;
		printf("%d\n", ans);
	}

	return 0;
}


posted @ 2022-08-22 15:38  Dregen_Yor  阅读(72)  评论(0)    收藏  举报