轉引:巴什博弈的變形:假設先取者為
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個(1
<
left
<=p)
b必勝,必勝策略為:每次取石子活動中,若a取
k個,則b去(
p+q-
k)個,那麼最後剩下
left個給a
,此時left
<=
p,所以
a只能一次去完,b勝。
若n =
(p+q
)*r +
left
個(p
<
left
<=
q),則
a必勝,必勝策略為:
a第一次取t(
1<
left –t
<=p
)個,以後每次b取
k個,則a取(
p+q-
k)個,那麼最後留下
1<
left –t
<=p給
b,則a勝。
1 #include2 #include3 #include4using
namespace
std;56
intmain()else
else
16 puts("
win"
);17}18
}19return0;
20 }
巴什博弈(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 巴什博奕變形
1 看清最後取的是輸還是贏 2 分類討論,想的時候,看怎麼能回到最初狀態 就是回到t p q s的狀態,以及怎麼回到已經推出的必敗態 include include include include include include include include using namespace std...
HDU2897 巴什博奕
題目傳送門 題意見傳送門 博弈題的題解總是 簡單博弈,找規律 為什麼我就找不到規律呢 我先用sg函式寫了一遍 tle了,然後察覺到需要o1的解法 也就是找規律 題目中說到,當石頭數量小於等於p個時,只能全部取完,也就是必敗態,接下來我們用巴什博弈的pn態性質來試著遞推 題目資料範圍也比較小,模擬區間...