BZOJ 1443 游戏(二分图博弈)】的更多相关文章

新知识get. 一类博弈问题,基于以下条件: 1.博弈者人数为两人,双方轮流进行决策.2.博弈状态(对应点)可分为两类(状态空间可分为两个集合),对应二分图两边(X集和Y集).任意合法的决策(对应边)使状态从一类跳转到另一类.(正是由于这个性质使得问题可以用二分图描述)3.不可以转移至已访问的状态.(不可重复访问点)4.无法转移者判负. 这类问题相当于从二分图指定起点开始轮流移动,不可重复访问点,无法移动判负 . 现在问题变为从二分图指定起点开始轮流移动,不可重复访问点,无法移动判负.不妨设起点…
题面 题面 题解 通过观察,我们可以发现如下性质: 可以看做是2个人在不断移动空格,只是2个人能移动的边不同 一个位置不会被重复经过 : 根据题目要求,因为是按黑白轮流走,所以不可能重复经过一个点,不然就变成一个人连续走2次了 原图是一个二分图 : 也是由按黑白轮流走这个要求得到的 因此我们对原图按照与原点的距离进行黑白染色,再跑二分图博弈即可. #include<bits/stdc++.h> using namespace std; #define R register int #defin…
题面 题面 题解 二分图博弈的模板题,只要会二分图博弈就可以做了,可以当做板子打. 根据二分图博弈,如果一个点x在某种方案中不属于最大匹配,那么这是一个先手必败点. 因为对方先手,因此我们就是要找这样一个点. 观察点x的性质,对于这样一个点x,我们一定可以找到一个点来代替它的位置,而什么样的点可以代替它呢? 从x出发,能够到达的未匹配同侧点可以,只需要交换匹配边即可. 因此做几遍dfs就可以了 #include<bits/stdc++.h> using namespace std; #defi…
传送门 Solution 补一篇二分图博弈 这个博客写的很详细qwq: https://www.cnblogs.com/maijing/p/4703094.html Code //By Menteur_Hxy #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define F(i,a,b) for(re…
题目链接 首先空格的移动等价于棋子在黑白格交替移动(设起点移向白格就是黑色),且不会走到到起点距离为奇数的黑格.到起点距离为偶数的白格(删掉就行了),且不会重复走一个格子. (然后策略就同上题了,只不过第一步是走棋子) 还是考虑二分图最大匹配.如果起点不一定在最大匹配上,先手走到最大匹配点,后手沿最大匹配边走,先手要么无法走要么回到刚刚的情况,即先手必败(最大匹配是一条奇数长路径). 反之,如果起点一定在最大匹配上,先手必胜. 判断一个点是否一定在最大匹配上可以先求一遍,再对非匹配点DFS.但是…
题目链接 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使用一次. 游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装备所使用的属性值必须从1开始连续递增地攻击,才能对boss产生伤害.也就是说一开始的时候,lxhgww只能使用某个属性值为1的装备攻击boss,然后只能使用某个属性值为2的装…
考虑对非障碍的点黑白染色然后做二分图最大匹配,那么有结论,先手必胜当且仅当不是完美匹配,而且可以放的点是那些可以不匹配的点 从非匹配点开始走,后手只能走到匹配点,于是先手就可以走匹配边.由于不能走走过的点,所以现在又变成了一个非匹配点:这样下去直到后手无路可走,所以先手必胜 反观完美匹配的情况,先手放在任意一个匹配的位置,后手都可以走匹配边从而变成了上面的情况,就是后手必胜 这类问题大概可以总结为:(一类可以用二分图来描述的博弈问题) 1.博弈者人数为两人,双方轮流进行决策.2.博弈状态(对应点…
此题的二分图匹配做法很容易想,就是把属性当做s集,武器当做t集,如果该武器拥有该武器则连一条边. 那么答案就是求该二分图的最大前i个匹配.将匈牙利算法改一改,当前找不到增广路就break. 但是过这个题需要常数优化,不能每次都fillchar一遍used数组.可以用队列将使用的used点加入,然后需要初始化的时候弹出即可. # include <cstdio> # include <cstring> # include <cstdlib> # include <i…
二分图博弈 from BZOJ 1443 游戏(二分图博弈) - free-loop - 博客园 定义 1.博弈者人数为两人,双方轮流进行决策. 2.博弈状态(对应点)可分为两类(状态空间可分为两个集合),对应二分图两边(X集和Y集).任意合法的决策(对应边)使状态从一类跳转到另一类.(正是由于这个性质使得问题可以用二分图描述) 3.不可以转移至已访问的状态.(不可重复访问点) 4.无法转移者判负. 判定 不妨设起点在二分图的X集中,那么先手只能从X集移动到Y集,后手只能从Y集移动到X集.一次游…
这种两个人轮流走,不能走 走过的格子的大都是二分图博弈... #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int, int> #define y1 skldjfskldjg #define y2 skldfjsklejg using namespace std; + ; ; const int…