跳到主要内容

题解:P8144 [JRKSJ R4] BBWWBB

· 阅读需 2 分钟
lailai
Blogger

原题链接

解题思路

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

  1. 白方先手:
  • 如果黑方先手,一定能吃掉一个白方棋子,而白方仅剩一个棋子,必输。
  1. 白方第一次能吃掉一个黑方棋子:
  • 3,43,4 个棋子是白棋,而棋子的位置单调递增。所以当 a3a2=1a_3-a_2=1a5a4=1a_5-a_4=1 时能就吃掉一个黑棋。
  1. 白方吃完后,不能被黑方吃掉棋子。考虑白棋不被吃掉的两种情况:
  • 吃掉一个黑棋后,自己不能被吃掉;
  • 另一边不能被吃掉。

参考代码

#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;
}