1. 程式人生 > >博弈論入門之巴什博奕

博弈論入門之巴什博奕

巴什博奕

巴什博奕:

兩個頂尖聰明的人在玩遊戲,有\(n\)個石子,每人可以隨便拿\(1-m\)個石子,不能拿的人為敗者,問誰會勝利

巴什博奕是博弈論問題中基礎的問題

它是最簡單的一種情形對應一種狀態的博弈

博弈分析

我們從最簡單的情景開始分析

當石子有\(1-m\)個時,毫無疑問,先手必勝

當石子有\(m+1\)個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗

當石子有\(m+2-2m\)時,先手可以拿走幾個,剩下\(m+1\)個,先手必勝

我們不難發現,面臨\(m+1\)個石子的人一定失敗。

這樣的話兩個人的最優策略一定是通過拿走石子,使得對方拿石子時還有\(m+1\)

我們考慮往一般情況推廣

  • 設當前的石子數為\(n=k*(m+1)+r\)

先手會首先拿走\(r\)個,接下來假設後手拿走\(x\)個,先手會拿走\(m+1-x\)個,這樣博弈下去後手最終一定失敗

  • 設當前的石子數為\(n=k*(m+1)\)

假設先手拿\(x\)個,後手一定會拿\(m+1-x\)個,這樣下去先手一定失敗

程式碼

#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;
}

題目

題解

題解

題解

相關推薦

博弈論入門

巴什博奕 巴什博奕: 兩個頂尖聰明的人在玩遊戲,有\(n\)個石子,每人可以隨便拿\(1-m\)個石子,不能拿的人為敗者,問誰會勝利 巴什博奕是博弈論問題中基礎的問題 它是最簡單的一種情形對應一種狀態的博弈 博弈分析 我們從最簡單的情景開始分析 當石子有\(1-m\)個時,毫無疑問,先手必勝 當石子有

博弈論-

巴什博奕(Bash Game): A和B一塊報數,每人每次報最少1個,最多報4個,看誰先報到30。這應該是最古老的關於巴什博奕的遊戲了吧。 其實如果知道原理,這遊戲一點運氣成分都沒有,只和先手後手有關,比如第一次報數,A報k個數,那麼B報5-k個數,那麼B報數之後問題就變為,A和B一塊報數,

博弈論知識點總結( 威佐夫博弈 尼姆博弈 SG()函式介紹)

總結 真心感謝博主,終於知道為什麼尼姆博弈用異或來解決。 SG函式模板: void init()//根據題目要求進行修改 { a[0]=1; for(int i=1;i<=32;i

博弈論,威佐夫博弈,尼姆博弈,斐波那契博弈)

一.  巴什博奕(Bash Game):   A和B一塊報數,每人每次報最少1個,最多報4個,看誰先報到30。這應該是最古老的關於巴什博奕的遊戲了吧。 其實如果知道原理,這遊戲一點運氣成分都沒有,只和先手後手有關,比如第一次報數,A報k個數,那麼B報5-k個數,那麼B報數之

HDU2188 悼念512汶川大地震遇難同胞——選拔誌願者(

queue lis code 通過 試用 一模一樣 pri space tdi 悼念512汶川大地震遇難同胞——選拔誌願者 Problem Description 對於四川同胞遭受的災難,全國人民紛紛伸出援助之手,幾乎每個省市都派出了大量的救援人員,這其中包括搶險救災的武警

NIM遊戲,NIM遊戲變形,威佐夫博弈以及總結

經典NIM遊戲:    一共有N堆石子,編號1..n,第i堆中有個a[i]個石子。 每一次操作Alice和Bob可以從任意一堆石子中取出任意數量的石子,至少取一顆,至多取出這一堆剩下的所有石子。 兩個人輪流行動,取走最後一個的人勝利。Alice為先手。 我們定義: P:表示當前局面下先手必敗 N

(Bash Game)

巴什博奕(Bash Game) 類似題目連結(杭電4764):http://acm.hdu.edu.cn/showproblem.php?pid=4764 程式碼如下: #include<iostream> #include<cstring> using na

HDU 1846 (Bash Game)

    Brave Game Problem Description 十年前讀大學的時候,中國每年都要從國外引進一些電影大片,其中有一部電影就叫《勇敢者的遊戲》(英文名稱:Zathura),一直到現在,我依然對於電影中的部分電腦特技印象

2149】Public Sale (

題幹: 雖然不想,但是現實總歸是現實,Lele始終沒有逃過退學的命運,因為他沒有拿到獎學金。現在等待他的,就是像FarmJohn一樣的農田生涯。  要種田得有田才行,Lele聽說街上正在舉行一場別

理論: 博弈2: (Bash Game)

巴什博奕基礎情形 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。最後取光者得勝。 如果n = m + 1; 我們假設第一個人拿走了k個, 還剩下 m + 1 - k。 因為1<=(m + 1 - k)<=

hdu1517 變換

//沒必要遞推sg,直接巴什博奕即可 /* 先手面對[n/2,n/9]必勝,即後手面對n/18必敗 同理,後手面對n/18^2必敗。。。 那麼能否使後手面對n/18^k的局勢,在於n/18^k是否在[2,9]內 */ #include<bits/stdc++.h> using namesp

(Bash_Game)

一、定義 只有一堆n個物品,兩個人輪流從這堆物品中取物, 規定每次至少取一個,最多取m個。最後取光者得勝。 二、分析 我們從最簡單的情景開始分析 當石子有1−m1−m個時,毫無疑問,先手必勝 當石子有m+1m+1個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗 當石子有m

假期訓練七(hdu-2845 dp,hdu-1846,2188

題目一:傳送門 思路:動態規劃,從每一行來看,每次更新求出這一點的最大值,dp[i]=MAX(dp[i-1],dp[i]+dp[i-2]),不會出現 兩個數字相鄰的情況;先對行進行更新,再對列進行更新。 #include<iostream> #include<cs

HDU1846博弈

簡單題~ #include <cstdio> #include <iostream> #include <algorithm> using namespace

取石子游戲博弈

下面這段來自白白の屋的文章的一段: 巴什博弈:只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取一個,最多取m個。最後取光者得勝。     顯然,如果n=m+1,那麼由於一次最多隻能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。

博弈論入門威佐夫博弈

威佐夫博弈 威佐夫博弈是一類經典的博弈問題 有兩堆石子,兩個頂尖聰明的人在玩遊戲,每次每個人可以從任意一堆石子中取任意多的石子或者從兩堆石子中取同樣多的石子,不能取得人輸,分析誰會獲得勝利 博弈分析 威佐夫博弈不同於Nim遊戲與巴什博奕,它的特殊之處在於不能將兩堆石子分開分析。 前輩們在對該博弈遊戲做了大

博弈論入門斐波那契博弈

斐波那契博弈 斐波那契博弈是一種經典的博弈問題 有一堆石子,兩個頂尖聰明的人玩遊戲,先取者可以取走任意多個,但不能全取完,以後每人取的石子數不能超過上個人的兩倍 結論 斐波那契博弈有一個非常重要的性質: 先手必敗,當且僅當石子數為斐波那契數 是不是很神奇?? 證明: 懶得看了,這裡有 程式碼 #incl

博弈論入門nim遊戲

更好的閱讀體驗點這裡 nim遊戲 nim遊戲 有兩個頂尖聰明的人在玩遊戲,遊戲規則是這樣的: 有\(n\)堆石子,兩個人可以從任意一堆石子中拿任意多個石子(不能不拿),沒法拿的人失敗。問誰會勝利 nim遊戲是巴什博奕的升級版(不懂巴什博奕的可以看這裡) 它不再是簡單的一個狀態,因此分析起來也棘手許

簡單博弈博弈

例題: Guns和Roses是兩個好朋友,這一天他們比賽吃葡萄。假定他們有ANS顆葡萄。 在比賽之前他們會首先確定每次吃葡萄的數量的最大值為S,和ANS的具體值。 兩個人輪流吃葡萄,每次最多吃S顆,不能不吃。(即假定每次吃M顆葡萄,則 1<=M<=S)

博弈論威佐夫

威佐夫博奕 母題:有兩堆各若干個物品,兩個人輪流從某一堆或同時從兩堆中取同樣多的物品,規定每次至少取一個,多者不限,最後取光者得勝。 這是一個公式,記住就好了,我也沒找到有關的證明,只在百度百科中找