「FAOI-R13」巴巴博弈题解

· · 题解

首先可以发现,由于 x 一直处在 0 到 n 之间,所以第 n 轮一定会有人胜利,因此游戏一定会结束。

假设先手拿到了第 n 轮,则他需要想办法拖到第 n 轮,这样他就赢了。先手可以一直对后手上一轮的操作做反向操作。如后手上一轮 -2,先手这一轮就 +2,保证给到后手的 x 一直等于 n。这样一来,后手在第 n 轮之前就一定赢不了,于是先手必胜。

若第 n 轮被后手拿到,于是后手也可以同理拖,后手必胜。

总结一下,n 为奇数时先手必胜,为偶数时后手必胜。

:::success[Code]

#include<bits/stdc++.h>
using namespace std;
int t;
long long n;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--)
    {
        cin>>n;
        if(n%2) cout<<"Yes\n";
        else cout<<"No\n";
    }
    return 0;
}

:::