10 条题解

  • 4
    @ 2024-7-28 14:25:15

    蒟蒻在 MXOJ 的第一篇题解,当然,这篇题解在洛谷上早已通过,原作者:jiangyunuo。
    吐槽一下,梦熊也太难操作了吧 QWQ,等等,好像不用审核。

    题目大意:

    本题意思很简单很简单,一个机器人在第奇数次移动要移动奇数步,在第偶数次移动也同理。最终,我们要让这个机器人从 (1,1)(1,1) 移动到 (n,m)(n,m)

    大体思路:

    本题主要考察的是奇偶性,别看它题面条件很多,感觉很复杂,但当你仔细观察样例的时候,你会发现,无论 nnmm 有多大,但结果只有 2233,其实本题就两种情况:

    1. nnmm 奇偶性相同。
    2. nnmm 奇偶性不相同。

    仔细想想,当第一种情况发生时,如果 nnmm 都是偶数,那么可以按 nmnn \to m \to n 的顺序,nnmm 分别表示横轴和纵轴,这就表示走横轴和纵轴的顺序,因为奇数加奇数等于偶数,偶数本身是偶数,可行;如果 nnmm 都是奇数,那么可以按 nmmn \to m \to m 的顺序,因为奇数本身是奇数,而奇数加偶数等于奇数,因此可行,两种情况都只要 33 步。
    当第二种情况发生时,我们可以先走要走长度为奇数的,再走另一条要走长度为偶数的,当然如果 nnmm 为奇数时那要走的长度是偶数,如果为偶数,那要走的长度是奇数(因为要走的长度为尾减头),只需 22 步即可。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int t,m,n;
    	cin>>t;
    	for(int i=1;i<=t;i++){
    		cin>>n>>m;
    		if((n%2)==(m%2))cout<<3<<endl;  //判断奇偶性是否相同,再根据奇偶性选择输出 2 或 3。
    		else cout<<2<<endl;
    	}
    return 0;
    }
    

    信息

    ID
    7
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    346
    已通过
    242
    上传者