hdu 1846 有趣,有趣

來源:互聯網
上載者:User

博弈問題除了有趣之外,我也想不到有什麼可以形容了,知識有用之餘,又可以騙下那些無知的小朋友(奸笑ing…………)

這個又是經典的說,叫做巴什博弈,英文叫Bash Game。嗯嗯,大概又是一個叫Bash的人想到的

所謂的Bash Game就是說:在只有一堆n個的物品,兩人輪流從中取物品,每次至少取一個,至多取m個,最後是誰取光物品誰就是勝利者。

        先假設,n = m+1.很明顯無論當前玩家從中取多少物品,都無法否認他將要輸的命運,這是一個必敗點。我們的目的總是為了導致必敗點,

假設 m+1 < n < 2(m+1),那麼當前玩家只要從中取(n-(m+1))就可以導致必敗點(m+1);又假設2(m+1) < n < 3(m+1),當前玩家只要從堆中取出

(n-2(m+1))的物品,堆中剩下2(m+1)的物品,無論對手接下來取多少物品(1 <= x <= m),剩下的物品數s,m+1 < s < 2(m+1),我們又可以取走相應數

量的物品使堆中剩下m+1 個物品,所以2(m+1)也是一個必敗點;如此類推堆中物品數 S = k(m+1)(k = 1,2,3……)為必敗點。

            最後得出在這個遊戲中:

                            1.如果m >= n,先手者必勝

                             2.如果n = k(m+1)+x (k = 1,2,3……;x <= m),先手者勝

                             3.如果n = k(m+1),後手者勝

然後…………………………你懂的


#include<iostream>using namespace std;int main(){int cCase;cin >>cCase;while(cCase--){int n,m;bool flag = true;cin >>n >>m;if(m >= n)flag = true;else if(n%(m+1))flag = true;elseflag = false;if(flag)cout <<"first" <<endl;elsecout <<"second" <<endl;}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.