
博弈
Bahuia
软件工程博士
展开
-
HDU - 4388 博弈 + 找规律
题意:给出n堆物品,每堆物品都有若干件,现在A和B进行游戏,每人每轮操作一次,按照如下规则:1. 任意选择一个堆,假设该堆有x个物品,从中选择k个,要保证02. 再增加一个大小为x^k的堆,另外有一个技能,可以将这个大小为x^k的堆变成(2*k)^x的堆,但是这个技能每个人只有一次机会可以使用。现在问两人轮流操作,都采取最优策略,最后不能操作的人输,问谁会赢。思路:好题。看原创 2017-03-17 16:20:31 · 1073 阅读 · 0 评论 -
HDU - 5724 博弈sg函数 + 状态压缩
题意:给出n行格子,每行格子长度为20,现在每一行的某些格子里都会放上一枚棋子,现在A和B要轮流移动这些棋子,每个棋子只能向右移动最近的一个空的格子上,而且两个棋子不能占用同一个格子,若谁不能移动就是输,在双方都采取最优策略的情况下,问谁赢谁输。思路:博弈,sg函数的一种应用,由于每行只有20个格子,可以考虑状态压缩。这里sg函数可能的取值只有0到19,因为每一行的格子最多只有20个,原创 2017-03-17 18:21:50 · 392 阅读 · 0 评论 -
HDU - 5754 博弈 + 找规律
题意:G和B玩游戏,在n*m的棋盘上轮流移动一枚棋子,棋子一开始位置在(1,1),每次只能朝右下角移动,不同棋子类型移动的规则不同,现在两个人都采取最优策略,B先手,判断谁会赢。思路:先百度国际象棋移动规则,然后前三个根据规则画一画必胜态必败态就能找到规律,最后一个我是看不出来规律,反正n和m也不大,直接递推预处理了。代码:#include using namespace s原创 2017-03-23 10:57:20 · 468 阅读 · 0 评论 -
HDU - 2174 博弈基础
题意:一个n*m个格子的棋盘上在(1,m)位置上有一枚棋子,这枚棋子每次可以向下,或向左,或向左下角移动一格,a和b进行移动棋子的游戏,a先移动,最后无法移动的人输,问在两个人都是最优操作的情况下,最后谁会赢。思路:为了方便考虑,我们定义棋子先(n,m)移动到(1,1),f[1][1]就是终结点,也就是必败点。最后的答案就是f[n][m],然后根据必胜点和必败点的规则,依次往后递推原创 2017-03-16 12:13:31 · 609 阅读 · 0 评论