巴什博奕(Bash_Game)
一、定義
只有一堆n個(gè)物品,兩個(gè)人輪流從這堆物品中取物, 規(guī)定每次至少取一個(gè),最多取m個(gè)。最后取光者得勝。
二、分析
我們從最簡(jiǎn)單的情景開(kāi)始分析
當(dāng)石子有1?m1?m個(gè)時(shí),毫無(wú)疑問(wèn),先手必勝
當(dāng)石子有m+1m+1個(gè)時(shí),先手無(wú)論拿幾個(gè),后手都可以拿干凈,先手必?cái)?/p>
當(dāng)石子有m+2?2mm+2?2m時(shí),先手可以拿走幾個(gè),剩下m+1m+1個(gè),先手必勝
我們不難發(fā)現(xiàn),面臨m+1m+1個(gè)石子的人一定失敗。
這樣的話兩個(gè)人的最優(yōu)策略一定是通過(guò)拿走石子,使得對(duì)方拿石子時(shí)還有m+1m+1個(gè)
我們考慮往一般情況推廣
-
設(shè)當(dāng)前的石子數(shù)為n=k?(m+1)+rn=k?(m+1)+r
先手會(huì)首先拿走rr個(gè),接下來(lái)假設(shè)后手拿走xx個(gè),先手會(huì)拿走m+1?xm+1?x個(gè),這樣博弈下去后手最終一定失敗
-
設(shè)當(dāng)前的石子數(shù)為n=k?(m+1)n=k?(m+1)
假設(shè)先手拿xx個(gè),后手一定會(huì)拿m+1?xm+1?x個(gè),這樣下去先手一定失敗
三、變形
兩個(gè)人輪流報(bào)數(shù),每次至少報(bào)一個(gè),最多報(bào)十個(gè),誰(shuí)能報(bào)到100者勝。
對(duì)于巴什博弈,那么我們規(guī)定,如果最后取光者輸,那么又會(huì)如何呢?
(n-1)%(m+1)==0則后手勝利
先手會(huì)重新決定策略,所以不是簡(jiǎn)單的相反行的
例如n=15,m=3
后手 先手 剩余
0? ? ? 2? ? ? 13
1? ? ? 3? ? ? ?9
2? ? ? 2? ? ? ?5
3? ? ?1? ? ? ? 1
1? ? ?0? ? ? ? 0
先手勝利 輸?shù)娜俗詈蟊囟ㄖ蛔プ咭粋€(gè),如果>1個(gè),則必定會(huì)留一個(gè)給對(duì)手
四、解決方案
1、結(jié)論
#include<cstdio> int main() {int n,m;scanf("%d%d",&n,&m);if(n % (m+1) !=0) printf("first win");else printf("second win");return 0; }二、SG定理
#include <bits/stdc++.h>using namespace std;const int N = 1000 + 10, INF = 0x3f3f3f3f;int sg[N], sm[N]; bool vis[N]; void SG(int n, int m) {for(int i = 0; i <= n; i++){memset(vis, 0, sizeof vis);for(int j = max(i-m, 0); j < i; j++) vis[sg[j]] = true;//i的后繼是[max(i-m,0), i-1]for(int j = 0; j <= n; j++)//mex運(yùn)算if(! vis[j]){sg[i] = j; break;}} } int main() {int t, n, m;scanf("%d", &t);while(t--){scanf("%d%d", &n, &m);SG(n, m);puts(sg[n] ? "first" : "second");}return 0; }三、DFS
?可以解決,但是TLE!!!
五、例題
http://poj.org/problem?id=2348
http://acm.hdu.edu.cn/showproblem.php?pid=1846
http://acm.hdu.edu.cn/showproblem.php?pid=4764
http://acm.hdu.edu.cn/showproblem.php?pid=1848
六、參考文章
https://www.cnblogs.com/zwfymqz/p/8460192.html
https://blog.csdn.net/luomingjun12315/article/details/45479073
總結(jié)
以上是生活随笔為你收集整理的巴什博奕(Bash_Game)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SG函数和SG定理(Sprague_Gr
- 下一篇: 讨厌三角形