BZOJ 2463: [中山市选2009]谁能赢呢?(博弈论棋盘模型)

本文探讨了棋盘游戏中的完美匹配策略,分析了Bob和Alice的胜负关键在于棋盘是否为二分图及是否存在完美匹配。若存在,则Bob沿匹配边行动有必胜策略;反之,Alice则可通过特定策略取胜。文章还介绍了求解不一定在最大匹配上的点的方法,并给出代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
棋盘上,我们可以把格子黑白染色,
看做一个二分图,
如果存在完美匹配,那么Bob每步都可以沿着一条匹配边走,Alice必须沿着非匹配边走,Bob拥有必胜策略。
如果不存在完美匹配,那么对于所有不一定在最大匹配上的(出发)点,Alice都拥有必胜策略:Bob走一条非匹配边,Alice走一条匹配边,否则,我们从原理上分析一波,
如果Alice赢,一定是Bob一开始走了可能为非匹配边的边,那么Bob被迫走非匹配边,即这个点周围的边都可以是非匹配边,那么这个点就可以是非匹配点,还是先手必胜。
那么如何求出不一定在最大匹配上的点呢?
首先求出任意一个最大匹配。对于所有不在最大匹配上的点,如果其与某个匹配点相邻,那么必然存在一种最大匹配,使得这两个节点配对。事实上,它通过交叉路径的匹配边能够到达的所有节点都不一定在最大匹配上。这个统计可以用DFS实现。总复杂度为 O ( m a x f l o w ( n 2 , n 2 ) + n 2 ) O(maxflow(n^2,n^2)+n^2) O(maxflow(n2,n2)+n2)
对于这个题,显然n为奇数时先手败,n为偶数是后手败。
推荐题目:「雅礼集训 2017 Day2」棋盘游戏
LOJ #536. 「LibreOJ Round #6」花札
AC Code:

#include<cstdio>
int main(){
	int n;
	for(;scanf("%d",&n) && n;){
		if(n&1) puts("Bob");
		else puts("Alice");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值