HDU 4678 Mine(博弈)】的更多相关文章

Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 658    Accepted Submission(s): 186 Problem Description Have you ever played a game in Windows: Mine? This game is played on a n*m board, jus…
HDU 4678 把点开空地时会打开的一大片区域看成一块,题目中说到,在一盘游戏 中,一个格子不可能被翻开两次,说明任意两块空地不会包含相同的格子. 那么就可以看成一个组合游戏. 当空地旁边没连任何数字的时候,sg = 1(直接转移到 0).如果有一个 数字,点空地可以转移到 0,点数字可以转移到 1,所以 sg = 2.有 2 个数 字点空地转移到 0,点数字转移到 2,所以 sg = 1. 以此类推,空地旁边有奇数个数字的时候,sg = 2,否则 sg = 1. 剩下的没与空地相连的数字,每…
Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 51    Accepted Submission(s): 6 Problem Description Have you ever played a game in Windows: Mine?This game is played on a n*m board, just lik…
http://acm.hdu.edu.cn/showproblem.php?pid=4678 自己太蠢...没学SG...还是浩神指点我SG精髓以后才A的这题...(第一题SG 这里子游戏之间没有影响所以只要找规律得出所有子游戏的SG值 然后求XOR就行了 这里题面太复杂 但看懂以后其实可以转换成取石子游戏: 给你N堆石子 , 每次只能取一个或者整堆取走 谁先取完谁胜 每堆石子的数量就是空白部分附近所有连接数字的数量+1(空白本身算一个石子) 孤立的单个数字也组成一堆 那么根据找规律可得: 奇数…
这是一题简单的博弈论!! 所有的空白+边界的数字(个数为n)为一堆,容易推出其SG函数值为n%2+1: 其他所有的数字(个数为m)的SG值为m%2. 再就是用dfs将空白部分搜一下即可!(注意细节) 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #inc…
n个棋子,其中第k个是红色的,每个棋子只能往上爬,而且不能越过.重叠其他棋子,谁将红色棋子移到顶部谁赢. 由于只能往上爬,所以很像阶梯博弈.这题有2个限制,棋子不能重叠,有红棋存在 首先不考虑红色棋,那么我们可以视棋于棋间的距离为石子堆,这样棋子两两分组就是奇数堆,组与组间的距离就是偶数堆. 有个特殊情况k=2时,此时第一个区间石子数要减小1,不能移完,否则后手直接就能取胜了. /** @Date : 2017-10-13 23:13:24 * @FileName: HDU 4315 阶梯博弈变…
n*n棋盘,初始左上角有一个石头,每次放只能在相邻的四个位置之一,不能操作者输. 如果以初始石头编号为1作为后手,那么对于每次先手胜的情况其最后一步的四周的编号必定是奇数,且此时编号为偶数,而对于一个局面,每个人都可以操控方向以致走完整个棋盘,所以当棋盘总格数为偶数时,先手必胜,而为奇数时,后手必胜. /** @Date : 2017-10-13 21:22:47 * @FileName: HDU 1564 简单博弈.cpp * @Platform: Windows * @Author : Lw…
HDU 6879 - Mine Sweeper 题意 定义<扫雷>游戏的地图中每个空白格子的值为其周围八个格子内地雷的数量(即游戏内临近地雷数量的提示) 则一张地图的值\(S\)为所有空白格子的值总和 现给定\(S\),要求构造出一张长度与宽度均不超过\(25\)的地图,使其值等于\(S\) 限制 \(1\leq T\leq 1001\) \(0\leq S\leq 1000\) 思路 这题过的人数应该是最多的,所以肯定是存在比我的想法更优更方便的解的 但是题解写的不是很清楚,所以还是写下了这…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4678 题意就不说了,太长了... 这个应该算简单博弈吧.先求联通分量,把空白区域边上的数字个数全部求出来a[i](就是一个连通分量),然后就是n堆石子,每堆每次可以取一个或者全部取掉,然后要注意在取玩边上的石子后,剩下的就只能一次取掉了,因此我们直接把空白区域上的算做一个a[i]+1.然后这个SG函数很好求,奇数是1,偶数是2... //STATUS:C++_AC_156MS_4268KB #inc…
1.HDU 2509  2.题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败. 3.总结:Nim博弈的变形,还是不知道怎么分析,,,,看了大牛的博客. 传送门 首先给出结论:先手胜当且仅当(1)所有堆石子数都为1且游戏的SG值为0,(2)存在某堆石子数大于1且游戏的SG值不为0.证明:(1)若所有堆石子数都为1且SG值为0,则共有偶数堆石子,故先手胜.(2) i)只有一堆石子数大于1时,我们总可以对该堆石子操作,使操作后石子堆数为奇数且所有堆得石子数均为1 ii)有…