博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[模板] 二分图博弈 && BZOJ2463:[中山市选2009]谁能赢呢?
阅读量:5924 次
发布时间:2019-06-19

本文共 930 字,大约阅读时间需要 3 分钟。

二分图博弈

from

定义

1.博弈者人数为两人,双方轮流进行决策。

2.博弈状态(对应点)可分为两类(状态空间可分为两个集合),对应二分图两边(X集和Y集)。任意合法的决策(对应边)使状态从一类跳转到另一类。(正是由于这个性质使得问题可以用二分图描述)
3.不可以转移至已访问的状态。(不可重复访问点)
4.无法转移者判负。

判定

不妨设起点在二分图的X集中,那么先手只能从X集移动到Y集,后手只能从Y集移动到X集。一次游戏过程对应一条路径 。若最后停留在X集且无法移动则先手负,停留在Y集则后手负。

考虑该二分图的某个最大匹配。(注意可能存在多个匹配相同的最大匹配)
若起点s∈X不属于该最大匹配。则先手所转移到的点y∈Y一定属于最大匹配(否则s-y是一个匹配,与最大匹配矛盾)。后手沿着最大匹配的边走即可,终点t(指无法从t再走一步)一定不可能在Y集中(否则,若t在Y集中,s-...-t为一增广路,与最大匹配矛盾)。因此先手必败,后手必胜。
若起点s∈X属于该最大匹配。则将s从图中删除,再求图的最大匹配。若最大匹配数不变,则s还是不属于某最大匹配,先手必败。否则该图的任意最大匹配都包含s,则先手沿着最大匹配的边走即可,根据上面的分析,先手必胜。

BZOJ2463-[中山市选2009]谁能赢呢?

Description

Solution

显然就是一个二分图...

考虑用1*2骨牌覆盖方格, 骨牌相当于一条匹配边.

n为偶数时, 骨牌恰好覆盖整个棋盘. 整个先手方沿匹配边走, 后手方只能走非匹配边. 最后后手一定无法走;
n为奇数时, 考虑除了起点外的所有点可以被骨牌覆盖, 也就是构成一个完美匹配. 后手只需沿匹配边走, 那么先手最后一定无法走.

Code

#include
using namespace std;int n;int main(){ while(cin>>n,n){ cout<<((n&1)?"Bob":"Alice")<<'\n'; } return 0;}

转载于:https://www.cnblogs.com/ubospica/p/10295217.html

你可能感兴趣的文章
如何拦截网路突发性垃圾邮件
查看>>
数据库并发的五个问题以及四级封锁协议与事务隔离的四个级别
查看>>
Android 如何连真机测试
查看>>
linux-裁剪Linux功能,编译/bin/login, busybox编译linux
查看>>
PLC编程入门
查看>>
个人读书清单
查看>>
HTML骨架结构
查看>>
Intellij下的android实践
查看>>
QQ拼音直接提权WIN8
查看>>
用FPM打RPM包
查看>>
度量时间差
查看>>
4.python的迭代器与生成器
查看>>
8. 队列(3)
查看>>
yum 安装apache php mysql
查看>>
User Profile文件变Temp
查看>>
我的友情链接
查看>>
改变cell的背景颜色
查看>>
SHELL中bash的部分特性
查看>>
瑞友杯虚拟化征文---瑞友天翼应用虚拟化之实战演示
查看>>
当PC无法上网时,如何检测是哪里的网络连接问题?
查看>>