![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈论
Mr.Gzj
这个作者很懒,什么都没留下…
展开
-
Fibonacci again and again
Problem Description任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的:F(1)=1;F(2)=2;F(n)=F(n-1)+F(n-2)(n>=3);所以,1,2,3,5,8,13……就是菲波那契数列。在HDOJ上有不少相关的题目,比如1005 Fibonacci again就是曾经的浙江省赛题。今天,又一个关于...原创 2019-01-25 22:07:17 · 170 阅读 · 0 评论 -
P1247 取火柴游戏
思路:要求如果胜利的话第一步要取第几个及取多少。先有一个定理:为奇异局势当且仅当证明:时显然成立。否则,显然k存在一个最高位。则一定存在一个,它在k的最高位的值为1。因此,(因为最高位变为0了)设则因此把取走几个后变成后,使后手必输。部分参考这个链接#include<bits/stdc++.h>using namespace std;...原创 2019-05-01 17:02:28 · 356 阅读 · 0 评论 -
Nim or not Nim? - hdu3032
题意:两人博弈,N堆石子,可以选择移走某一堆的任意数量的石子,也可以选择将这一堆分成任意两堆东西。思路:和nim游戏差不多,只是多了一个分成两堆的操作,分成两堆也就是计算两个子堆的异或,然后sg函数打表找规律,sg[0]=0,sg[1]=1,2可以变成1+1,1,0,sg[2]=2.....#include<bits/stdc++.h>using namespace s...原创 2019-05-01 20:19:08 · 129 阅读 · 0 评论 -
hdu1847Good Luck in CET-4 Everybody!(sg函数找规律)
#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fint sg[100000], vis[100000], f[100000], pos = 1;;int main() { for(int i = 1; i < 2000; i *= 2) { f[pos++] = ...原创 2019-05-02 21:32:25 · 166 阅读 · 0 评论 -
BZOJ1874: [BeiJing2009 WinterCamp]取石子游戏
暴力算出1000以内的sg函数(肯定是10以内,因为最多10取石子的种方案),然后每一堆的sg函数xor起来得到最终的sg函数,若为0,就输若不为0,就赢,然后判断还要注意一下,这个方案是否可取(在不在m种取石子的方案里)#include<bits/stdc++.h>using namespace std;typedef long long ll;const int...原创 2019-05-03 00:07:35 · 264 阅读 · 0 评论 -
基础博弈论题和一些题解
1、Brave GameHDU - 1846题意:给出n个石子和m,俩人取,每次最多取m个,不能取的输,问输的是谁。思路:典型巴什博弈,可以发现,如果一共有m+1个物品,我们去取它,先手至少要取一个,却又把所有的物品取不完,这样就导致了后手的必赢。如果物品数小于等于能取的数目,是必胜的,因为只用取一次,如果是大于能取的数目的,我们可以把总数n分解为(m+1)∗x+r所以,先...原创 2019-05-01 15:12:14 · 884 阅读 · 0 评论 -
博弈论 SG函数
Nim游戏重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impa...转载 2019-05-01 15:52:25 · 206 阅读 · 0 评论 -
round 557div2 E. Thanos Nim
题意:给出n堆石子,每次可以从n/2堆里取任意多个,当石子少于n/2堆时,现在拿石子的人输。思路:当有一个人把任意一堆石子拿完时,它是必败的,因为另一个可以把另外的n/2堆石子拿完,则剩下不足n/2堆。由于n都是偶数,则可以从2开始打表,发现,若对所有石子排序后,若最小的石子堆数大于n/2时,必定bob赢。当最少的石子堆数小于等于n/2时,先手可以将后一半石子拿的和前一半一样,然后就模仿后...原创 2019-05-14 21:18:56 · 201 阅读 · 0 评论 -
计蒜客- BE, GE or NE 博弈论+记忆化搜索
题意:一个游戏根据途中不同的选择,对最终的分数有不同的影响,根据最终分数有三种结局:gd,bd,nd。现K和S一起玩这个游戏,K希望gd,S希望bd。有n次选择,每次选择可能有a,b,c三个选项,选择a,则分数+a,a=0代表没有a选项。选择b,则分数-b,b=0代表没有b选项。选择c,则分数*(-1),c=0代表没有c选项。他们轮流做选择,K先选。如果不能达到自己想要的结局,就尽量争取nd结局。...原创 2019-08-30 23:00:36 · 224 阅读 · 0 评论