题解:P8144 [JRKSJ R4] BBWWBB

· · 题解

解题思路

如果游戏能无限进行下去,需要同时满足三个条件:

  1. 白方先手:如果黑方先手,一定能吃掉一个白方棋子,而白方仅剩一个棋子,必输。

  2. 白方第一次能吃掉一个黑方棋子:第 3,4 个棋子是白棋,而棋子的位置单调递增。所以当 a_3-a_2=1a_5-a_4=1 时能就吃掉一个黑棋。

  3. 白方吃完后,不能被黑方吃掉棋子。考虑白棋不被吃掉的两种情况:吃掉一个黑棋后,自己不能被吃掉;另一边不能被吃掉。

参考代码

#include <bits/stdc++.h>
using namespace std;

int a[10];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T;
    cin>>T;
    while(T--)
    {
        char c;
        cin>>c;
        for(int i=1;i<=6;i++)cin>>a[i];
        bool b1=c=='W';
        bool b2=a[3]-a[2]==1&&a[2]-a[1]!=1&&a[5]-a[4]!=1;
        bool b3=a[5]-a[4]==1&&a[6]-a[5]!=1&&a[3]-a[2]!=1;
        cout<<(b1&&(b2||b3)?"Yes":"No")<<'\n';
    }
    return 0;
}