思路
根据题意以及下面给的样例解释,我们不难看出最优解一定是下面两种情况的一种:
即一个人直接抵达目标点的距离加上另一个人走行和列,即 \(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;
}
标签:int,题解,scanf,Crossmarket,CF1715A,ans
From: https://www.cnblogs.com/Dregen-Yor/p/16612994.html