P7589 黑白棋(2021 CoE-II B

原题P7589 黑白棋(2021 CoE-II B)

题目描述 \text{Alice}Alice 和 \text{Bob}Bob 正在玩一种称为“黑白棋”的游戏。该游戏的规则如下:

游戏在直角坐标系中进行。

\text{Alice}Alice 执黑棋,\text{Bob}Bob 执白棋。

初始时,在直角坐标系中任选 nn 条与 XX 轴平行的直线,直线在 YY 轴上的截距均为整数,且互不相同。\text{Alice}Alice
在每条直线上都会放置一枚黑棋,\text{Bob}Bob 在每条直线上都会放置一枚白棋,棋子位置的 XX
坐标值均为整数。在同一条直线上的两枚棋子位置不会相同。

\text{Alice}Alice 和 \text{Bob}Bob 轮流走棋,\text{Alice}Alice
总是先走棋。每名玩家在走棋时,先选择一条直线,然后沿着直线移动该条直线上己方颜色的棋子。

每个玩家可以将自己的棋子向着靠近对方棋子的方向一次性移动若干整数单位距离,称之为前进。每个玩家也可以向着远离对方棋子的方向一次性移动若干整数单位距离,称之为后退。只要在前进时不跨过对方的棋子,也不使黑棋和白棋的位置发生重叠,前进的最远距离不限,但是前进的距离至少为
11,如果无法满足前述条件,则玩家不能执行前进操作。为了避免玩家反复后退导致游戏无法结束,在一局游戏中,某个玩家执行后退操作的总次数不能超过
kk 次。与此同时,为了防止游戏区域太大以致在显示游戏状态上造成不便,每次后退的距离至少为 11,但不能超过
dd。如果无法满足前述条件,玩家不能执行后退操作。

玩家在轮到自己走棋时,如果能够执行操作就必须执行一次操作,此操作可以是前进操作,也可以是后退操作(如果未超出后退次数的限制)。

如果某个玩家无法执行任何操作来移动自己的棋子,将输掉游戏,游戏结束。

给定游戏的初始状态,假设 \text{Alice}Alice 和 \text{Bob}Bob 在游戏时均采用最佳策略,试确定
\text{Alice}Alice 能否获胜。在这里插入图片描述在这里插入图片描述
在这里插入图片描述

直接看成是nim游戏:

/*
https://www.luogu.com.cn/problem/P7589
	P7589 黑白棋(2021 CoE-II B)
*/

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

int main(){
	int t;
	cin >> t;
	while(t --){
		int n, k, d;
		cin >> n >> k >> d;
		int y, b, w;
		int ans = 0;
		for(int i = 1; i <= n; i ++){
			cin >> y >> b >> w;
			ans ^= (abs(b-w)-1);
		}
		if(ans) cout << "Yes\n";
		else cout << "No\n";
	}
	return 0;
} 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值