HDU2897 巴什博奕

2021-10-08 06:24:35 字數 594 閱讀 8532

題目傳送門

題意見傳送門

博弈題的題解總是:簡單博弈,找規律… …

為什麼我就找不到規律呢

我先用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...