HDU 2897 邂逅明下 博弈論初步 巴什博弈

2021-08-11 02:26:51 字數 1795 閱讀 8106

當日遇到月,於是有了明。當我遇到了你,便成了侶。

那天,日月相會,我見到了你。而且,大地失去了光輝,你我是否成侶?這注定是個淒美的故事。(以上是廢話)

小t和所有世俗的人們一樣,期待那百年難遇的日食。駐足街頭看天,看日月漸漸走近,小t的脖子那個酸呀(他堅持這個姿勢已經有半個多小時啦)。他低下仰起的頭,環顧四周。忽然發現身邊竟站著位漂亮的mm。天漸漸暗下,這mm在這街頭竟然如此耀眼,她是天使嗎?站著小t身邊的天使。

小t對mm驚呼:「緣分吶~~」。mm卻毫不含糊:「是啊,500年一遇哦!」(此後省略5000字….)

小t趕緊向mm要****,可mm說:「我和你玩個遊戲吧,贏了,我就把我的手機號告訴你。」小t,心想天下哪有題目能難倒我呢,便滿口答應下來。mm開始說遊戲規則:「我有一堆硬幣,一共7枚,從這個硬幣堆裡取硬幣,一次最少取2枚,最多4枚,如果剩下少於2枚就要一次取完。我和你輪流取,直到堆裡的硬幣取完,最後一次取硬幣的算輸。我玩過這個遊戲好多次了,就讓讓你,讓你先取吧~」

小t掐指一算,不對呀,這是不可能的任務麼。小t露出得意的笑:「還是mm優先啦,呵呵~」mm霎時愣住了,想是對小t的反應出乎意料吧。

她卻也不生氣:「好小子,挺聰明呢,要不這樣吧,你把我的郵箱給我,我給你發個文字,每行有三個數字n,p,q,表示一堆硬幣一共有n枚,從這個硬幣堆裡取硬幣,一次最少取p枚,最多q枚,如果剩下少於p枚就要一次取完。兩人輪流取,直到堆裡的硬幣取完,最後一次取硬幣的算輸。對於每一行的三個數字,給出先取的人是否有必勝策略,如果有回答win,否則回答lost。你把對應的答案發給我,如果你能在今天晚上8點以前發給我正確答案,或許我們明天下午可以再見。」

小t二話沒說,將自己的郵箱給了mm。當他興沖沖得趕回家,上網看郵箱,哇!mm的郵件已經到了。他發現文字長達100000行,每行的三個數字都很大,但是都是不超過65536的整數。小t看錶已經下午6點了,要想手工算出所有結果,看來是不可能了。你能幫幫他,讓他再見到那個mm嗎?

不超過100000行,每行三個正整數n,p,q。

對應每行輸入,按前面介紹的遊戲規則,判斷先取者是否有必勝策略。輸出win或者lost。

7 2 4

6 2 4

lost

win

什麼是巴什博弈:只有一堆n個物品,兩個人輪流從這堆物品中取物, 規定每次至少取乙個,最多取m個。最後取光者得勝。

我們稱先進行遊戲的人為先手,另乙個人為後手。

1、如果 n=m+1n=m+1 ,那麼由於一次最多只能取 mm 個,所以,無論先手拿走多少個,後手都能夠一次拿走剩餘的物品,後者取勝。

2、如果 n=(m+1)∗r+sn=(m+1)∗r+s ,(r為任意自然數, s≤ms≤m ),先手要拿走s個物品,如果後手拿走 k(k≤m)k(k≤m) 個,那麼先手再拿走 m+1−km+1−k 個,結果剩下 (m+1)∗(r−1)(m+1)∗(r−1) 個,以後保持這樣的取法,那麼先取者肯定獲勝。我們得到如下結論:要保持給對手留下 (m+1)(m+1) 的倍數,就能最後獲勝。

只要 nn 不能整除 m+1m+1 ,那麼必然是先手取勝,否則後手取勝。

#include

using

namespace

std;

#define rep(n) for(int i=0;i#define mset(a) memset(a,0,sizeof(a))

const

int maxn=100000;

bool sg[maxn];

int n,p,q;

void procedure()

}pos++;

}}int main()

return

0;}

HDU 2897 邂逅明下 簡單博弈)

題目大意 就是現在一堆石子有n顆,每次只能拿走p q顆,當剩餘少於p顆的時候必須一次拿完 拿走最後一顆的人敗 問誰會獲得勝利 大致思路 首先不難發現當n p的時候是必敗點 p點 那麼對於p 1 n p q,這些都都可以轉移到必敗點 p點 他們都是必勝點 n點 而對於 p q 1 n 2 p q 治呢...

HDU 2897 邂逅明下

題意 一堆石子n個,a,b兩人輪流從中取,每次取的石子必須在 區間 p,q 內,若剩下的石子少於p個,取石者須全部取完。最後取石子的者輸。給出n,p,q,問先取者是否有必勝策略?思路 巴什博弈變形 證明 假設先手為a,後手為b,初始n個,除最後一次每次取的石子個數必須 在 區間 p,q 內,則 1....

HDU 2897 邂逅明下

題意是給n個錢幣,每個人最少取p顆,最多q顆,少於p顆時必須全部全完,取最後一下的人輸,判斷先手是贏還是輸。完全就是那個取1 m的模型的類推,把1換成p,m換成q,於是用類似的做法解決。include include include include include include include i...