博弈论相关(巴什博弈)


巴什博奕

基本模型:有n个石子,两人轮流取,一次取1-m个,先取完者胜。

另一种描述:两人每次竞价,加价只能在1-m范围中,价格先达到或超过n元者胜。

解决方法:n%(m+1)==0,后手胜,否则先手胜。

 

       例题: hdu 2897 邂逅明下

       题目描述(简略版):有n个石子,两人轮流取,一次取p-q个,先取完者输。

       把问题转变为巴什博弈,写成n=(q+p)*k+r的形式,讨论即可

     

 1 #include<bits/stdc++.h>
 2
 3 using namespace std;
 4 int n,p,q;
 5 int main()
 6 {
 7     ios::sync_with_stdio(false);
 8     while(cin>>n>>p>>q)
 9     {
10         int res=n%(p+q);
11         if(res>0&&res<=p) cout<<"LOST"<<endl;
12         else cout<<"WIN"<<endl;
13      }
14      return 0;
15 }

邂逅明下

     

原文地址:https://www.cnblogs.com/3200Pheathon/p/11181794.html

时间: 2024-10-30 05:39:20

博弈论相关(巴什博弈)的相关文章

博弈论基础——巴什博弈

->可以看这<- HDU.4764.Stone \(Description\) Tang,Jiang两人轮流写数,若A在写了X,则B只能写Y,满足1<=Y-X<=k.最先写数的T只能写[1,k]内的数.第一个写的数>=N的lose,问最后的winner. \(Solution\) 看做取N-1个石子,每次最多取K个,就是个巴什博弈了 #include <cstdio> int main() { int n,k; while(scanf("%d%d&quo

博弈论之巴什博奕

巴什博弈(定理): 只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个.最后取光者得胜. 如果n=m+1,一次最多只能取m个,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,则后者取胜. 取胜的法则 :如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿k(k≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的局势,那么先取者必然获胜. 即n%(m+1) != 0总之,要保持留给对手(m

巴仕博弈 + 威佐夫博弈

既然会了尼姆博弈和SG函数,那么巴仕博弈和威佐夫博奕照理说应该是不在话下了 巴什博奕: 两个顶尖聪明的人在玩游戏,有n个石子,每人可以随便拿1到m个石子,不能拿的人为败者,问谁会胜利 巴什博奕是博弈论问题中基础的问题 它是最简单的一种情形对应一种状态的博弈 博弈分析 如果有m+1个石子,那么先手必定无法取完全部,但后手可以取完剩下的部分,使得先手没有石子可以取,那么这个时候先手必败, 那么假设石子总数为(m+1)*r+n,r,n都为自然数,且n<m+1,那么如果我们先手,当r≠0时,我们只需要取

hdu 2897(巴什博弈变形)

邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4069    Accepted Submission(s): 1872 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话)小 t和所有世俗的人

HDU 2149————巴什博弈

Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行,Lele听说街上正在举行一场别开生面的拍卖会,拍卖的物品正好就是一块20亩的田地.于是,Lele带上他的全部积蓄,冲往拍卖会. 后来发现,整个拍卖会只有Lele和他的死对头Yueyue. 通过打听,Lele知道这场拍卖的规则是这样的:刚开始底价为0,两个人轮流开始加价,不过每次加价的幅度要在1-N之间,当价格大于或等于

hdoj 2188 悼念512汶川大地震遇难同胞——选拔志愿者 【巴什博弈】

题意:... 策略:最简单的典型的巴什博弈. 代码: #include<stdio.h> int main() { int n, m; int t; scanf("%d", &t); while(t --){ scanf("%d%d", &n, &m); if(n%(m+1) == 0){ printf("Rabbit\n"); } else printf("Grass\n"); } } 题

hdu 2188 巴什博弈

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个, 后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:如果 n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走 k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的 取法,那么先取者肯定获胜.总

hdu 1851 尼姆+巴什博弈

先在每堆中进行巴什博弈,然后尼姆 1 #include<stdio.h> 2 int main() 3 { 4 int T; 5 int i,n; 6 int ans,m,l; 7 scanf("%d",&T); 8 while(T--) 9 { 10 scanf("%d",&n); 11 ans=0; 12 for(i=1;i<=n;i++) 13 { 14 scanf("%d%d",&m,&l

hdu 1846 Brave Game (巴什博弈 最简单的博弈水题)

Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6434    Accepted Submission(s): 4294 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分