随笔分类 -  博弈论

摘要:参考博客 先讲一下Georgia and Bob: 题意: 给你一排球的位置(全部在x轴上操作),你要把他们都移动到0位置,每次至少走一步且不能超过他前面(下标小)的那个球,谁不能操作谁就输了 题解: 当n为偶数的时候,假设当每个球都相互挨着没有间隙,那么两两一组,一组中前面那个走到哪,后面那个跟上 阅读全文
posted @ 2019-08-19 10:37 kongbursi 阅读(172) 评论(0) 推荐(0) 编辑
摘要:HDU 1564 Play a game题意: 棋盘的大小是n*n。一块石头被放在一个角落的广场上。他们交替进行,8600人先走。每次,玩家可以将石头水平或垂直移动到一个未访问的邻居广场。谁不采取行动,谁就会输掉这场比赛。如果双方都打得很好,谁将赢得比赛? 题解: 三角形代表起始位置,虽然不是右上角 阅读全文
posted @ 2019-08-18 09:52 kongbursi 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题意: 有一块xi*Yi的矩形巧克力,Alice只允许垂直分割巧克力,Bob只允许水平分割巧克力。具体来说,对于Alice,一块巧克力X i * Y i,只能分解成a * Y i和b * Y i其中a + b = X i和a, b > 0。对于Bob,一块巧克力X i * Y i,只能分解成X i 阅读全文
posted @ 2019-08-18 09:27 kongbursi 阅读(167) 评论(0) 推荐(0) 编辑
摘要:题意: 用整数p乘以2到9中的一个数字。斯坦总是从p = 1开始,做乘法,然后奥利乘以这个数,然后斯坦,以此类推。游戏开始前,他们画一个整数1 < n < 4294967295,谁先到达p >= n,谁就是赢家。 题解: 看这一道题就会联想起来巴什博弈,但是巴什博弈是不停的从一堆石子里面往外边拿;这 阅读全文
posted @ 2019-08-17 17:56 kongbursi 阅读(148) 评论(0) 推荐(0) 编辑
摘要:题意: 游戏是这样的:两个玩家以一堆n个石头开始游戏。他们轮流从石堆里取石头,每次至少取一块。先走的人第一步最多可以拿n-1块石头。从那时起,一个玩家最多可以拿k倍于他的对手上次拿的石头。例如,如果一个玩家轮流拿m块石头,那么另一个玩家下一次最多可以拿k×m块石头。谁拿了最后一块石头,谁就赢了这场比 阅读全文
posted @ 2019-08-17 17:47 kongbursi 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题意: 给你n堆石子,你每次只能操作一堆石子 1、拿去任意个,最少1个 2、把这一堆分成两堆,没有要求对半分 解析+代码: 阅读全文
posted @ 2019-08-16 17:16 kongbursi 阅读(150) 评论(0) 推荐(0) 编辑
摘要:题意: 给你n个硬币,你可以从中拿出来1、2、3个硬币,它们不一定要连续,你只需要保证拿出来的硬币中那个下标最大的硬币一定要是正面朝上,最后谁不能操作,谁就输了 题解: 翻硬币游戏 结论: 局面的SG 值为局面中每个正面朝上的棋子单一存在时的SG 值的异或和。即一个有k个硬币朝上,朝上硬币位置分布在 阅读全文
posted @ 2019-08-16 17:13 kongbursi 阅读(196) 评论(0) 推荐(0) 编辑
摘要:【转】博弈-翻硬币游戏 翻硬币游戏 一般的翻硬币游戏的规则是这样的: N 枚硬币排成一排,有的正面朝上,有的反面朝上。我们从左开始对硬币按1 到N 编号。 第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面。例如,只能翻3个硬币的情况,那么第三个硬币必须是从正面 阅读全文
posted @ 2019-08-16 11:58 kongbursi 阅读(1557) 评论(0) 推荐(1) 编辑
摘要:题意: 给你n个盒子,从1 n,你每次要找出来两个盒子下表分别是a,b;它们要满足(a+b)%2==1 && (a+b)%3==0,找到盒子之后要从b向a中拿过去至少1个卡牌 最多不限(这里b>a的) 阶梯博弈:(尼姆博弈升级) 这种题目就是只能从高出向低处放东西,谁最后一次放到最低处谁就获胜(比如 阅读全文
posted @ 2019-08-16 11:00 kongbursi 阅读(175) 评论(0) 推荐(0) 编辑
摘要:题意: 给你n个石子,你最少取p个,最多取q个,问谁能赢 题解: 变形版的巴什博弈,当n>=q+1的时候,那么还是以q+1为一组拿走,剩下一个(n%(q+1)),这个时候如果它小于p的话都直接输了,如果大于p的话就赢了 当n<q+1的时候和上面一样处理就可以了 代码: 1 #include<stdi 阅读全文
posted @ 2019-08-13 11:51 kongbursi 阅读(441) 评论(0) 推荐(0) 编辑
摘要:HDU2176题意: m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子. 通过 SG定理 我们可以知道每一个数的SG值,等于这个数到达不了的前面数中的最小值。本题题意和尼姆博弈一样,即可以在一堆中任意个石子,所以也就是说每个数都可以到达前面经过的 阅读全文
posted @ 2019-08-13 11:37 kongbursi 阅读(192) 评论(0) 推荐(0) 编辑
摘要:题意: 给你两个数n、m(假设n>m),问让n-k*m(k要保证n-k*m>=0),如果谁先减出来0的话谁就获得胜利 题解: 当n%m==0的时候先手获胜 当n<2*m的时候,那么只能通过辗转相减来一步一步求结果 当n>2*m的时候,先手获胜。假设这个时候我们已经知道了n%m与m这两个数是先手获胜还 阅读全文
posted @ 2019-08-13 11:07 kongbursi 阅读(101) 评论(0) 推荐(0) 编辑
摘要:取石子三 题意: 给你n堆石子,你可以从一堆中拿取任意个石子,在拿完之后你还可以(你也可以不做)对你操作过的石子堆再进行一次操作——从中拿取一些石子放到其他有石子数不为0的石子堆上。 题解: 当只有一堆石子的时候那是必胜态N; 两堆石子的时候:如果两堆石子数量一样就是必败态P,因为后手可以跟着前手一 阅读全文
posted @ 2019-08-10 09:27 kongbursi 阅读(474) 评论(0) 推荐(0) 编辑
摘要:巴什博弈: 问题:给你一堆石子共n个,你最多只能拿走m个,问什么情况下先手胜 结论:当n%(m+1)==0的时候先手输,反之则赢 简而言之,谁先面对k*(m+1)(k是任意值),谁就输 题目 代码: 1 //巴什博弈 2 //谁先面对m+1(m是最多拿多少石子)那谁就输 3 //因为先手最多拿m个, 阅读全文
posted @ 2019-08-09 16:05 kongbursi 阅读(463) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示