题解:P8144 [JRKSJ R4] BBWWBB
· 阅读需 2 分钟
原题链接
解题思路
如果游戏能无限进行下去,需要同时满足三个条件:
- 白方先手:
- 如果黑方先手,一定能吃掉一个白方棋子,而白方仅剩一个棋子,必输。
- 白方第一次能吃掉一个黑方棋子:
- 第 个棋子是白棋,而棋子的位置单调递增。所以当 或 时能就吃掉一个黑棋。
- 白方吃完后,不能被黑方吃掉棋子。考虑白棋不被吃掉的两种情况:
- 吃掉一个黑棋后,自己不能被吃掉;
- 另一边不能被吃掉。
参考代码
#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;
}