蒟蒻:先把n=1,2的情况的图画出来就应该能看出规律了。

C题链接: https://ac.nowcoder.com/acm/contest/11253/C

题意分析:俩小孩玩一个游戏:每人可以选两点,然后用线将两点连接起来,注意在连线的时候不能围成封闭图形。(那么就是谁先连线围成封闭图形谁就输了。)


解题步骤:

1. 考虑n=1的情况
当n=1,m=1,一个点,那么谁先玩谁就输(两点才能确定一条直线)
当n=1,m=2, 两个点,刚好连出一条线段(此时后手输,因为没有点可以选了)
当n=1,m=3,三个点,那么可以连出两条线段(先手连了后手再连线,此时轮到先手连线,但是无点可选,所以先手输)
当n=1,m=4, 四个点,可以连出三条线 (容易推出后手输)

2.考虑n=2的情况
当n=2,m=1, (等价于n=1,m=2)(后手输)
当n=2,m=2   (四个点,要想不围成封闭图形最多连三条线段,第四条线段必定围成一个封闭图形,见下图)
当n=2,m=3   (六个点,要想不围成封闭图形最多连五条线段,第六条线段必定围成一个封闭图形,见下图)

图片说明

3. 可以意识到不围成封闭图形的线段总数量等于点的总数-1,不妨设不围成封闭图形的线段总数量为n,则有:
当n%2==1,先手赢
当n%2==0,后手赢

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int num = n*m;
    num-=1;
    if(num%2==1)
        cout<<"YES";
    else 
        cout<<"NO";
    return 0;
}