![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈
文章平均质量分 69
kuricip
如果你瞄准月亮,即便迷失,也是在星辰之间
展开
-
HDU-3032Nim or not Nim?(SG打表)
题目传送门Nim or not Nim?题目大意Alice和Bob做游戏,共有n堆石子,没堆石子为s[i]s[i]s[i]个,每一次可以从任意一堆中拿走任意个石子,也可以将一堆石子分为两个小堆。先拿完者获胜。Alice先手思路用SG打表后发现规律是x=x−1 when (x%4==0)x=x-1\ when\ (x\%4==0)x=x−1 when (x%4==0)x=x+1 when (x%4==3)x=x+1\ when\ (原创 2020-10-30 15:04:58 · 102 阅读 · 0 评论 -
HDU-2897邂逅明下(SG打表找规律)
题目传送门邂逅明下题目大意每行有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完。两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输。对于每一行的三个数字,给出先取的人是否有必胜策略,如果有回答WIN,否则回答LOST思路通过SG打表会发现每一段1~p之间时为必胜状态 , p~q时为必败状态(注意最后取完的算输)所以只需要n%(p+q)n\%(p+q)n%(p+q)判断余数的情况是在哪段之间即可AC Code#prag原创 2020-10-30 11:26:29 · 82 阅读 · 0 评论 -
取石子游戏HDU-2516(斐波那契博弈)
题目传送门取石子游戏题目大意1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".思路找规律会发现每一个必败点都是斐波那契数列中的值AC Code#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<cstdio>#include<algorithm>#i原创 2020-10-30 11:09:23 · 136 阅读 · 0 评论 -
kiki‘s game(巴什博奕+PN分析)
题目传送门kiki’s game题目大意给你一个棋盘,其大小是n∗mn*mn∗m,首先,在右上角(1,m)(1,m)(1,m)放一个硬币。每次可以选择将硬币移到左侧,下方或左侧下方的空白区域,无法移动的人都会输掉比赛。Kiki先手思路首先PN点分析,从末状态左下点为必败点,往前推算其他的位置的局势会发现规律为n或者m中至少一个为偶数时先手必胜AC Code#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<cst原创 2020-10-29 23:33:01 · 194 阅读 · 0 评论 -
Good Luck in CET-4 Everybody!(巴什博奕)
题目传送门Good Luck in CET-4 Everybody!题目大意1、 总共n张牌;2、 双方轮流抓牌;3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;Kiki先手,Cici后手思路当一个人面临3的倍数的局势时必败,因为他无法取完,而另外一个人可以取完或者构造一个新的3的倍数局势给这个人所以算是巴什博奕,判断对3取模的情况即可AC Code#pragma GCC optimize("-Ofas原创 2020-10-29 23:17:22 · 437 阅读 · 0 评论 -
Brave Game(巴什博奕)
题目传送门Brave Game题目大意有一堆石子一共有n个;两人轮流进行;每走一步可以取走1…m个石子;最先取光石子的一方为胜;思路很明显的巴什博弈n对m+1取模判断余数是否为0即可AC Code#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<cstdio>#include<algorithm>#include<iostream>#include<cstring&g原创 2020-10-29 23:10:17 · 173 阅读 · 0 评论 -
Play a game(博弈)
题目传送门Play a game思路大佬解法AC Code#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<math.h>using namespace std;#define endl '\n'#define IN原创 2020-10-29 23:04:12 · 846 阅读 · 0 评论 -
Euclid‘s Game(博弈)
减去两数差值的Euclid’s Game题目大意A和B比赛,玩家必须在棋盘上写上一个正数,该数字等于棋盘上已有的两个数字的差值;这个数字必须是新的,即与主板上已有的所有数字不同。无法移动的玩家输掉游戏。A先手思路判断较大值除以两数的最大公约数的奇偶性即可AC Code#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<cstdio>#include<algorithm>#include<i原创 2020-10-29 20:26:38 · 574 阅读 · 0 评论 -
Calendar Game(博弈)
题目传送门Calendar Game题目大意给你一个年月日,你可以选择月或者日中的一个让其增加1如果下个月没有当前的天数就不能移动月,到达11月4日就不能移动,无法移动的人失败,超过11月4日的也算输思路最后胜利的是奇数局势,即我们需要保证对面走偶数局势,即为我们必须一直占据奇数局势注意点即为每个月的30号这天,因为可以转移到1号和下个月的30号造成不同的奇偶局势而我们只需要考虑9月30日和11月30日,因为这两天是奇数开局并且为必败态AC Code#pragma GCC optimiz原创 2020-10-29 18:46:53 · 208 阅读 · 0 评论 -
Slime and Stones(威佐夫博弈扩展)
Slime and Stones题目传送门Slime and Stones附上大佬博弈博客简单易懂的博弈论讲解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)题目大意给你两堆石子,每次可以单独拿一堆中的任意值,或者两堆都拿,但是两堆拿的值需满足∣x−y∣≤k|x−y|≤k∣x−y∣≤k思路显然的威佐夫博弈的扩展威佐夫博弈中如果想拿两堆的话,拿的石子必须相同,即x=yx=yx=y也就是从原来的y=x+ky=x+ky=x+k变成了y=x+d∗ky=x+d*ky=x+d∗k,所以根据原创 2020-08-23 19:25:13 · 410 阅读 · 0 评论