随笔分类 - 算法竞赛-博弈论
摘要:斐波纳契博弈: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完; 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。 约定取走最后一个石子的人为赢家,求必败态。 证明 FBI数为必败局: 1.对于任意一个FBI数
阅读全文
摘要:题目思路: 对于尼姆博弈我们知道:op=a[1]^a[2]……a[n],若op==0先手必败 一个简单的数学公式:若op=a^b 那么:op^b=a; 对于第i堆a[i],op^a[i]的值代表其余各个堆值的亦或值。 我们现在希望将a[i]改变成某个更小的值使得,op^a[i]=0,反过来a[i]=
阅读全文
摘要:题目思路:巴什博奕的简单变形 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<iostream> #include<algorithm> #define INF 0x3f3f3f3f
阅读全文
摘要:题目思路:威佐夫博弈: 当当前局面[a,b]为奇异局时直接输出0 否则: 1.若a==b,输出(0 0); 2.将a,b不停减一,看能否得到奇异局,若有则输出; 3.由于 ak=q*k(q为黄金分割数)具有单调性,不断改变k的值,看是否可以得到奇异局,若有则输出。 其他的话,要注意一些细节。 #in
阅读全文
摘要:题目思路: 写出SG函数(1表示先手胜,0表示先手负) 110110110110…… 发现n%3==0时,Cici胜 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<iostream>
阅读全文
摘要:题目大意: 题目给出了两个正数a.b 每次操作,大的数减掉小的数的整数倍。一个数变为0 的时候结束。 谁先先把其中一个数减为0的获胜。问谁可以赢。Stan是先手。 题目思路: 无论a,b的值为多少,局面:[a%b,b] 一定会出现。 双方都足够聪明,无论谁都知道这种局面是必胜局面还是必败局面 若是必
阅读全文
摘要:题目大意:从1开始Stan与Ollie经行博弈,stan先手,每次将当前数乘上(2~9)间的任意数,最后一次操作后大于等于n的人获胜。 题目思路: 1-9 stan 胜 10-18 ollie胜 19-162 stan 胜 163-306 ollie胜 (stan为了接近那个数尽可能的扩大选择乘9,
阅读全文
摘要:题目大意:从1900年1月1日 — 2001年11月4日间选择一天为起点,两个人依次进行两种操作中的任意一种,当某人操作后为2001年11月4日时,该人获胜。问先手是否获胜 操作1:向后移一天 操作2:向后移一月 题目思路:设:op=month+day,除了9.30和11.30外无论进行哪一种操作都
阅读全文
摘要:题目大意:尼姆博弈,求先手必胜的情况数 题目思路:判断 ans=(a[1]^a[2]……^a[n]),求ans^a[i] < a[i]的个数。 #include<iostream> #include<algorithm> #include<cstring> #include<vector> #inc
阅读全文
摘要:题目大意:尼姆博弈,判断是否先手必胜。 题目思路: 尼姆博弈:有n堆各a[]个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 获胜规则:ans=(a[1]^a[2] ……^a[n]),若ans==0则后手必胜,否则先手必胜. #include<iostream
阅读全文
摘要:巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜
阅读全文
摘要:威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
阅读全文