随笔- 1046
文章- 115
评论- 19
阅读-
36万
随笔分类 - 博弈
UVaLive 5760 Alice and Bob (博弈 + 记忆化搜索)
摘要:题意:有 n 堆石子,有两种操作,一种是从一堆中拿走一个,另一种是把两堆合并起来,Alice 先拿,谁不能拿了谁输,问谁胜。 析:某些堆石子数量为 1 是特殊,石子数量大于 1 个的都合并起来,再拿,这是最优的,因为都想另一个输,并且第二种操作是可以翻转胜负的,所以都会先采取第二个操作,但是砘数量为
阅读全文
HDU 1404 Digital Deletions (暴力博弈)
摘要:题意:给定一个数字串,最长是6,然后有两种操作。 第一种是,把该串中的一个数字换成一个比该数字小的数,比如 5 可以换成 0,1,2,3,4. e.g. 12345 --> 12341 第二种是,把数字 0 以及它后面的数都删掉,e.g. 120154 --> 12 析:因为数字最长是 6 位,所以
阅读全文
HDU 2147 kiki's game (奇偶博弈)
摘要:题意:给定一个 n * m 的格子,从右上角(1, m) 开始每个玩家只能从向下,向左,或者向左下走,谁不能走,谁输。 析:自己做出来,看了网上的几个博客,好像都没说为什么是只有全奇的情况才会输,个人的理解如下,如果不对,欢迎指正。 首先,从(1, m) 走到 (n, 1) 这才是一个完整的,也就是
阅读全文
HDU 1079 Calendar Game (博弈或暴搜)
摘要:题意:给定一个日期,然后 A 和 B 双方进行操作,谁先把日期变成2001年11月04日,将获胜,如果超过该日期,则输了,就两种操作。 第一种:变成下一天,比如现在是2001.11.3 变成 2001.11.4 第二种,变成下一个月的同一天,比如现在是2001.10.3 变成 2001.11.3,当
阅读全文
HDU 1517 A Multiplication Game (SG函数找规律)
摘要:题意:两个玩家玩一个游戏,从 p = 1,开始,然后依次轮流选择一个2 - 9的数乘以 p,问你谁先凑够 p >= n。 析:找规律,我先打了一下SG函数的表,然后就找到规律了 我找到的是: 1 - 9 Stan wins. 1 ~ 9 10 - 18 Ollie wins. 9+1 ~ 9*2 1
阅读全文
HDU 3980 Paint Chain (SG函数)
摘要:题意:给定一个圆环,上面有 n 个无色的珠子,然后有两个玩家,每次玩家要选连续的 m 个珠子染成不存在的颜色,染过的不能再染,谁不能染,谁输,问你谁胜。 析:一个SG函数的应用,首先这是一个环,不好做,把它变成线才好做,怎么变呢,很明显,第一个玩家涂是任意涂的,所以当它涂完,剩下的就可以成一个长度为
阅读全文
UVa 10561 Treblecross (SG函数)
摘要:题意:给定上一行字符串,其中只有 X 和 . 并且没有连续的三个 X,两个玩家要分别在 . 上放 X,如果出现三个连续的 X,则该玩家胜利,现在问你先手胜还是败,如果是胜则输出第一步可能的位置。 析:首先,如果输入中出现了 XX 或者 X.X,那么先手必胜,这种可以先处理,然后考虑剩下的,首先每个玩
阅读全文
HDU 1536 S-Nim (组合游戏+SG函数)
摘要:题意:针对Nim博弈,给定上一个集合,然后下面有 m 个询问,每个询问有 x 堆石子 ,问你每次只能从某一个堆中取出 y 个石子,并且这个 y 必须属于给定的集合,问你先手胜还是负。 析:一个很简单的博弈,对于每组数据,要先处理出SG函数, 然后使用组合游戏和来解决就ok了,对于求sg函数,很明显,
阅读全文
51Nod 1185 威佐夫游戏 V2 (威佐夫博弈)
摘要:1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值:
阅读全文
HDU 4111 Alice and Bob (博弈+记忆化搜索)
摘要:题意:给定 n 堆石头,然后有两种操作,一种是把从任意一堆拿走一个,另一种是把一个石子放到另一堆上。 析:整体看,这个题真是不好做,dp[a][b] 表示有 a 堆1个石子,b个操作,操作是指把其他的不是1的堆全部合并起来并全部拿完所以要的操作, 要注意的是 ,一共有这几种情况。 1.a 为0,说明
阅读全文
HDU 5973 Game of Taking Stones (威佐夫博弈+高精度)
摘要:题意:给定两堆石子,每个人可以从任意一堆拿任意个,也可以从两堆中拿相同的数量,问谁赢。 析:直接运用威佐夫博弈,floor(abs(a, b) * (sqrt(5)+1)/2) == min(a, b) 是必败态。用java的BigDecimal,是很好用的,要十分求Sqrt(5). 代码如下:
阅读全文
HDU 3915 Game (高斯消元)
摘要:题意:有n堆石子,每个人只能从某一堆至少拿走一个,不能拿者败。问事先拿走某些堆的石子,使得先手必败。 析:将石子拆成二进制,未知数为1表示保留该堆石子,为0表示事先拿走该堆石子。最后求自由变元的数目,就是2的幂。 代码如下:
阅读全文
POJ 2311 Cutting Game (博弈)
摘要:题意:给定一个长方形纸张,每次只能水平或者垂直切,如果切到1*1的方格就胜,问先手胜还是负。 析:根据Nim游戏可知,我们可以分别求出每个子游戏的和,就是答案,所以我们就枚举每一种切法,然后求出SG函数,那么就能得到答案。 代码如下:
阅读全文
POJ 2348 Euclid's Game (博弈)
摘要:题意:给定两个整数,两个人轮流操作,每次可以用较大数减去较小数的整数倍,当一个数变成0时,则结束,问谁会胜。 析:很明显如果 a == b 那么就可以直接结束了,那么如果 a > b我们可以交换两个数,保证 a < b。可以分成两类, (1) b - a < a (2) b - a > a 对于第一
阅读全文
POJ 2484 A Funny Game (博弈)
摘要:题意:Alice 和 Bob 在玩一个无聊的游戏,n个棋子围成一圈,两人轮流从中取走一或两个棋子,不过取两个时必须是连续的棋子。 棋子取走之后留下空位,相隔空位的棋子不连续。Alice先取,取走最后一个棋子的人赢。如果都采取最优策略,谁会赢? 析:如果是小于两个,很明显是Alice胜,如果是3个是B
阅读全文
POJ 1704 Georgia and Bob (博弈)
摘要:题意:给定一个格子,有一些位置有球,每次可以向前移动一些位置,但不能超过前一个小球,问谁会胜利。 析:由于两个人都是足够聪明,所以我们可以把每两个相邻的球分成一个组,因为先手移动前一个移动多少位置,后手也可以移动第后一个, 如果是奇数,可以在0号位置放一个,没有影响,然后就成一个Nim组合游戏了。
阅读全文
UVa 10891 Game of Sum (DP)
摘要:题意:给定一个长度为n的整数序列,两个人轮流从左端或者右端拿数,A先取,问最后A的得分-B的得分的结果。 析:dp[i][j] 表示序列 i~j 时先手得分的最大值,然后两种决策,要么从左端拿,要么从右端拿,肯定是拿的是最大的。 代码如下:
阅读全文
Gym 100512F Funny Game (博弈+数论)
摘要:题意:给两个数 n,m,让你把它们分成 全是1,每次操作只能分成几份相等的,求哪一个分的次数最多。 析:很明显,每次都除以最小的约数是最优的。 代码如下:
阅读全文
URAL 2068 Game of Nuts (博弈)
摘要:题意:给定 n 堆石子,每次一个人把它们分成三堆都是奇数的,谁先不能分,谁输。 析:因为每堆都是奇数,那么最后肯定都是要分成1的,那么就把不是1的全加和,然后判断奇偶就OK了。 代码如下:
阅读全文
HDU 4597 Play Game (DP,记忆化搜索,博弈)
摘要:题意:Alice和Bob玩一个游戏,有两个长度为N的正整数数字序列,每次他们两个,只能从其中一个序列,选择两端中的一个拿走。他们都希望可以拿到尽量大的数字之和, 并且他们都足够聪明,每次都选择最优策略。Alice先选择,问最终Alice拿到的数字总和是多少? 析:很明显的一个博弈题,但是用记忆化搜索
阅读全文