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

http://acm.hdu.edu.cn/showproblem.php?pid=4678 自己太蠢...没学SG...还是浩神指点我SG精髓以后才A的这题...(第一题SG 这里子游戏之间没有影响所以只要找规律得出所有子游戏的SG值 然后求XOR就行了 这里题面太复杂 但看懂以后其实可以转换成取石子游戏: 给你N堆石子 , 每次只能取一个或者整堆取走 谁先取完谁胜 每堆石子的数量就是空白部分附近所有连接数字的数量+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…
HDU 4678 把点开空地时会打开的一大片区域看成一块,题目中说到,在一盘游戏 中,一个格子不可能被翻开两次,说明任意两块空地不会包含相同的格子. 那么就可以看成一个组合游戏. 当空地旁边没连任何数字的时候,sg = 1(直接转移到 0).如果有一个 数字,点空地可以转移到 0,点数字可以转移到 1,所以 sg = 2.有 2 个数 字点空地转移到 0,点数字转移到 2,所以 sg = 1. 以此类推,空地旁边有奇数个数字的时候,sg = 2,否则 sg = 1. 剩下的没与空地相连的数字,每…
Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6253    Accepted Submission(s): 2603 Problem Description 不论什么一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的: F(1)=1; F(…
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…
S-Nim Problem Description   Arthur and his sister Caroll have been playing a game called Nim for some time now. Nim is played as follows: The starting position has a number of heaps, all containing some, not necessarily equal, number of beads. The pl…
这是一题简单的博弈论!! 所有的空白+边界的数字(个数为n)为一堆,容易推出其SG函数值为n%2+1: 其他所有的数字(个数为m)的SG值为m%2. 再就是用dfs将空白部分搜一下即可!(注意细节) 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #inc…
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4102743.html 题目链接:hdu 4778 Gems Fight! 博弈+状态dp+搜索 不难发现,无论Alice和Bob以何种方式投掷包裹,他们得到的Magic Stones个数的和$Sum$是一定的,因此只需要计算Alice可以获得的最大的Magic Stones的个数MAXA,则Bob获得的个数为Sum-MAXA,而两者的最大的差为MAXA-(sum-MAXA)为答案.那么如何…
给两数a,b,大的数b = b - a*k,a*k为不大于b的数,重复过程,直到一个数为0时,此时当前操作人胜. 可以发现如果每次b=b%a,那么GCD的步数决定了先手后手谁胜,而每次GCD的一步过程视为一个子游戏,但是可以发现如果当前可以约的次数大于2,那么此时操作的人可以控制局面,那么考虑所有可约次数大于2的即可. /** @Date : 2017-10-12 21:46:31 * @FileName: HDU 1525 类bash 博弈.cpp * @Platform: Windows *…
题目链接:https://vjudge.net/problem/UVA-12293 题意: 两人玩游戏,有两个盒子,开始时第一个盒子装了n个球, 第二个盒子装了一个球.每次操作都将刷量少的盒子的球倒掉,然后再从数量多的盒子中拿出若干个球放到空盒子里,最终状态为(1,1),达到这个状态的玩家获胜. 题解: 1.由于每次都是倒掉数量少的那个盒子,再对数量多的盒子进行分割,所以可以把规则简化为:初始时有n个球,每次只能拿走不多于n/2的球,最终状态为1个球,达到这个状态的玩家获胜. 2.简化游戏规则之…