題目傳送門
題意見傳送門
博弈題的題解總是:簡單博弈,找規律… …
為什麼我就找不到規律呢
我先用sg函式寫了一遍 tle了,然後察覺到需要o1的解法(也就是找規律
題目中說到,當石頭數量小於等於p個時,只能全部取完,也就是必敗態,接下來我們用巴什博弈的pn態性質來試著遞推:
題目資料範圍也比較小,模擬區間右端點的狀態即可出答案
ac**:
int
main()
if(!flag)
cout <<
"lost\n"
;else
cout <<
"win\n";}
return0;
}
當然,到了這一步,我們發現所有必敗態都是n在[1+k(p+q),p+k(p+q)] (k為任意 常數)中,那麼就變成了很多題解中的簡單博弈:n%(p+q)>=1&&n%(p+q)<=p
ac**:
int
main()
return0;
}
總結:巴什博弈應該好好利用pn態的轉移方式 hdu 2897 巴什博奕變形
1 看清最後取的是輸還是贏 2 分類討論,想的時候,看怎麼能回到最初狀態 就是回到t p q s的狀態,以及怎麼回到已經推出的必敗態 include include include include include include include include using namespace std...
巴什博弈(hdu 2897)
巴什博弈的變形 假設先取者為a,後取者為b,初始狀態下有石子n個,除最後一次外其他每次取得石子個數必須在 p,q 之間。若當前石子共有n p q r個,則a必勝,必勝策略為 a第一次取q個,以後每次若b取k個,a取 p q k 個,如此下去最後必剩下p個給b,所以a必勝。若n p q r left個...
hdu 2897 巴什博弈變形)
轉引 巴什博弈的變形 假設先取者為 a,後取者為 b,初始狀態下有石子 n個,除最後一次外其他每次取得石子個數必須在 p,q 之間。若當前石子共有n p q r個,則 a必勝,必勝策略為 a第一次取 q個,以後每次若b取 k個,a取 p q k 個,如此下去最後必剩下p個給 b,所以 a必勝。若 n...