样例:
这题是一道数学思维题,因为不能走同一个方向,所以路线可规定为向下向右或者向下向左,求最小,则需求出向左次数
规定n为长边,n-m为奇数时向左次数是(n-m-1)/2,而路线投影需走n-1+m-1,只要求出向左走重复次数,重复次数等于向左次数*2,因此总步数等于(n-m-1)/2*2+n-1+m-1
同理n-m为偶数时总步数(n-m)/2*2+n-1+m-1
对于小边等于1的情况特判等于-1就行了
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long n,m,ans,temp;
scanf("%lld%lld",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
if(m==1&&n>2) printf("-1\n");
else
{
if((n-m)%2==1)
{
ans=(n-m-1)/2*2+n-1+m-1;
}
else
ans=(n-m)/2*2+n-1+m-1;
printf("%lld\n",ans);
}
}
return 0;
}