bzoj2437】的更多相关文章

题目链接 BZOJ2437 题解 和JSOI2014很像 只不过这题动态删点 如果我们把空位置看做\(X\)的话,就会发现我们走的路径是一个\(OX\)交错的路径 然后将图二分染色,当前点必胜,当且仅当当前点必须作为最大匹配的匹配点 移动相当于删点,删点的话只需打个标记即可 判断当前点是不是必选,只需尝试更改当前点匹配点的匹配点即可 #include<algorithm> #include<iostream> #include<cstring> #include<…
[BZOJ2437][NOI2011]兔兔与蛋蛋(博弈论,二分图匹配) 题面 BZOJ 题解 考虑一下暴力吧. 对于每个状态,无非就是要考虑它是否是必胜状态 这个直接用\(dfs\)爆搜即可. 这样子对于每一次操作,考虑兔兔操作后的状态是否是必胜状态 如果这个状态是必胜状态,并且蛋蛋操作完后的状态是(兔兔的)必败状态 那么这就是一个"犯错误"的操作. 这样暴力可以拿到\(75pts\) #include<iostream> #include<cstdio> #i…
首先将棋盘黑白染色,不妨令空格处为黑色.那么移动奇数次后空格一定处于白色格子,偶数次后空格一定处于黑色格子.所以若有某个格子的棋子颜色与棋盘颜色不同,这个棋子就是没有用的.并且空格与某棋子交换后,棋子所在的格子改变使得该棋子与棋盘颜色不同,那么该棋子也会变为无用棋子.那么问题变为空格在棋盘上黑白格子交替移动,棋盘上有障碍物,走过的格子不能再走,不能移动者输. 显然这是一个二分图博弈.如果所有的最大匹配都包含起点,先手必胜,因为每次只需要沿匹配边走即可,由增广路定理不会出现没边走的情况.否则后手必…
会做jsoi那道game,这题就非常简单了吧 我们考虑空格的移动,显然,初始与空格位置距离为奇数的黑棋和距离为偶数的白棋并没有什么用, 空格不会移到那,我们直接把他们当作障碍,其他点我们当作可移动区域 这不就和game那道题一样了吗,只不过这题不问棋子放哪 而是给定棋子位置,问当前是否是先手必胜 (错误操作就是指当前是先手必胜而移动一格还是先手必胜的操作) 我们对图重新黑白染色,做二分图匹配,显然,棋子在一定能被匹配的点上时,是先手必胜 证明类似game,因为棋子在一定在一定能被匹配的点上,我们…
二分图博弈果然都是一个套路,必经点必胜,非必经点必败, 但是肯定不能每走一步就重新建图判断必胜还是必败,那么我们可以这样:每走一步就把这个点删掉,然后find他原来的匹配,如果找不到,就说明他是必经点,否则就是非必经点. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> #define N 1601 usin…
Description Input 输入的第一行包含两个正整数 n.m. 接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母"O"或点号"."之一,分别表示对应的棋盘格中有黑色棋子.有白色棋子和没有棋子.其中点号"."恰好出现一次. 接下来一行包含一个整数 k(1≤k≤1000) ,表示兔兔和蛋蛋各进行了k次操作. 接下来 2k行描述一局游戏的过程.其中第 2i – 1行是兔兔的…
传送门 题意: 给出一个\(n*m\)的棋盘,上面有若干个黑色棋子,若干个白色棋子,还有一个空格. 每次先手选择一个空格,将它与相邻的某个白色棋子交换:后手则选择一个空格,与相邻的某个黑色棋子交换. 最终不能移动的人输. 现在给出一个棋盘以及游戏过程,最终的结果为先手输掉比赛.请你输出先手在这次比赛中失误了几次以及那几次的序号. 思路: 首先明确,先手失误:当且仅当在其操作前存在必胜策略,在其操作后后手存在必胜策略. 然后考虑两个人的操作,将其等价于移动空格,先手只能移向白点,后手只能移向黑点.…