题目链接 \(Description\) 一个\(N*M\)的有障碍的棋盘,先手放置棋子后,从后手开始轮流移动棋子,不能走重复的位置,不能移动的输.求在哪些位置放棋子是先手必胜的. \(Solution\) 依旧先黑白染色,移动棋子对应一个匹配. 那么原图有两种情况: 一是存在完美匹配:那么无论先手选哪个点开始,假设是S集合某点,那么后手沿匹配边走,先手要么沿匹配边再走到S集合某点,要么没法走.即先手必败: 二是不存在完美匹配: 1.先手从最大匹配点开始,好像胜负情况都有,先不考虑: 2.先手从…
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1443 反正不看题解我是完全想不出系列…… 先把棋盘黑白染色,也就是同一对角线上颜色相同,使得一个格子上下左右都不同色. 然后我们会发现,某一个人所走的全部格子颜色都是相同的. 把黑白格子当作点提取出来,放在两边,就变成了二分图,游戏的全过程变得像匈牙利算法的增广. 这提示我们也许跟二分图匹配有关. 如果一个点必定在最大匹配中,而一开始棋子放在了这里小YY只要沿着匹配边走小AA就gg了.…
好题. 首先看到棋盘,先黑白染色. 然后就是二分图的经典模型. 考虑最特殊的情况,完美匹配,那么先手必胜, 因为无论如何,先手走匹配边,后手无论走哪条边,总有对应的匹配边. 如果在不在最大匹配中出发,先手无论如何会走到最大匹配中,然后后手顺着匹配走,一定能胜利. (万一又走到非最大匹配中呢,显然这样我们会找到一条增广路,与最大匹配不符). 但是最大匹配不止又一种,所以我们需要判断是否在最大匹配中,需要寻找交错路. 如果在最大匹配中出发,显然先手必胜,(如果走到非最大匹配的点上,那么就相当于找到一…
[算法]博弈论+二分图匹配(最大流) [题解]方格图黑白染色得到二分图, 二分图博弈:当起点不属于某个最大匹配时,后手必胜. 问题转化为那些点不属于某个最大匹配. 先找到一个最大匹配,非匹配点加入答案. 假设一个匹配点要解放成为非匹配点,则与其匹配的点必须去匹配另一个点.如果另一个点也是匹配点,则其对面又要去找另一个点. 最终得到结论,一个匹配点的解放,必须有一个非匹配点进入最大匹配. 那么从S一侧的非匹配点出发,沿着“非匹配边-匹配边”的路径走,途中经过的S一侧的匹配点都可以被解放出来. 从T…
题目链接 首先空格的移动等价于棋子在黑白格交替移动(设起点移向白格就是黑色),且不会走到到起点距离为奇数的黑格.到起点距离为偶数的白格(删掉就行了),且不会重复走一个格子. (然后策略就同上题了,只不过第一步是走棋子) 还是考虑二分图最大匹配.如果起点不一定在最大匹配上,先手走到最大匹配点,后手沿最大匹配边走,先手要么无法走要么回到刚刚的情况,即先手必败(最大匹配是一条奇数长路径). 反之,如果起点一定在最大匹配上,先手必胜. 判断一个点是否一定在最大匹配上可以先求一遍,再对非匹配点DFS.但是…
题目大意:n*m的棋盘,其中有些区域是禁区,两个人在棋盘上进行博弈,后手选择棋子的初始位置,然后先后手轮流将棋子往上下左右移动,走过的区域不能再走,问能否有一个位置使得后手必胜 Input 输入数据首先输入两个整数N,M,表示了迷宫的边长. 接下来N行,每行M个字符,描述了迷宫. Output 若小AA能够赢得游戏,则输出一行"WIN",然后输出所有可以赢得游戏的起始位置,按行优先顺序输出 每行一个,否则输出一行"LOSE"(不包含引号). Sample Input…
noi2011 兔兔与蛋蛋 题目大意 直接看原题吧 就是\(n*m\)的格子上有一些白棋和一些黑棋和唯一一个空格 兔兔先手,蛋蛋后手 兔兔要把与空格相邻的其中一个白棋移到空格里 蛋蛋要把与空格相邻的其中一个黑棋移到空格里 谁不能移动谁输 分析 这篇博客挺好的 我们可以将题意转化成兔兔将空格移到白棋那里 蛋蛋将空格移动到黑棋那里 转化成图黑白染色,变成二分图 我们设空格染成黑色 那空格移动的轨迹一定是: 黑\(~\)-白-黑-白-黑 对应的是: 空格-白棋-黑棋-白棋-黑棋 所以染成白色且为白棋\…
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1854 题解: 1.二分图匹配: 首先我们发现每件装备只能在两种属性中选一种.因此,我们以每个装备的编号向两种属性分别连边.然后用1-n的属性分别进行向装备的匹配,一旦有一种匹配不上就退出. 代码: #include<bits/stdc++.h> using namespace std; ; int head[maxn],vis[maxn],fa[maxn],ans,cnt,n,maxx…
[BZOJ1443]游戏(二分图匹配,博弈论) 题面 BZOJ 题解 很明显的二分图博弈问题. 发现每次移动一定是从一个黑点到达一个白点,或者反过来. 所以可以对于棋盘进行染色然后连边. 考虑一下必胜策略. 如果选择从一个匹配点开始走, 另外一个人沿着匹配点走,那么就输了,因为匹配点不一定有出边了. 如果选择从一个非匹配点开始走, 另外一个人无论怎么走都只能走到一个匹配点(或者无路可走) 如果另外一个人可以走到一个非匹配点,意味着这两个点可以匹配,所以不存在这种情况. 那么,先手只需要沿着匹配边…
如果没有不能走的格子的话,和BZOJ2463一样,直接判断是否能二分图匹配 现在有了一些不能走的格子 黑白染色后求出最大匹配 如果是完备匹配,则无论如何后手都能转移到1*2的另一端,故先手必输 否则的话,将棋子放在不是必须点的点上则先手必赢 证明是这样的: 先手先选一个不在最大匹配里面的点,然后对手有两种情况: 一.走一个在最大匹配里的点,然后有了上面考虑错的那种情况,但是不同的是,如果出现了后手最后走某边达到一个非最大匹配中点,就代表出现了一条增广路,显然因为是最大匹配,所以这种情况是不会出现…