hdu4701 Game(遞推博弈)

2022-01-29 10:30:36 字數 878 閱讀 5760

題意:

alice初始有a元,bob有b元。

有n個物品,第i個物品價值為ci。alice和bob輪流買一些(>=1)物品。不能移動的人輸。購買有乙個限制,對於第1

個之後物品,只有當第i-1個物品被購買後,第i個物品才能被購買。

保證兩人都是最優操作,alice先手,問誰將取得勝利。

1<=n<=1e6;0<=a,b<=1e9;1<=ci<=9

分析:

這種博弈問題,一看就是需要遞推來求解的

考慮dp[x][money]表示現在這個人有money元,即將面對x..n這麼多物品,能否獲勝

這樣的狀態是**的,但是這樣的狀態如果只存0 1有點浪費,所以可以改進一下狀態表示

dp[x]表示現在某個人面對x..n這麼多物品,如果想要獲勝,至少現在手上要有多少錢

我現在手裡有這麼多錢:dp[x]

對方手裡現在有這麼多錢:a+b-sum[x-1]-dp[x]

那麼怎麼轉移呢?

我要贏,我可以列舉從x開始買多少個物品,那麼就對應後面的乙個狀態y>x,滿足dp[y]《對方手裡的錢 並且 我買的y-x之間的物品我要能承擔起

也就是dp[x]>=sum[y-1]-sum[x-1] 並且 a+b-sum[x-1]-dp[x]+1<=dp[y]

也就是dp[x]>=max(sum[y-1]-sum[x-1],a+b+1-sum[x-1]-dp[y])

那麼dp[x]肯定是這些y中最小的

也就是dp[x]=min(max(sum[y-1]-sum[x-1],a+b+1-sum[x-1]-dp[y]))=min(max(sum[y-1],a+b+1-dp[y]))-sum[x-1]

這個從後往前一掃是o(n)的

hdu 3389 Game(階梯博弈)

1 3 4號盒子是最終狀態,所有出始狀態都會經過若干步操作變成這個最終狀態。如果仔細分析,會發現 n 6 0 或 2 或 5的盒子,經過奇數步轉移到1 3 4中去,其他的則須經過偶數步才能轉移過去。易證 偶數步的不用管,對於奇數步的操作只需轉換成nim博弈,利用異或運算判斷是否必勝即可。includ...

HDU 3389 Game 階梯博弈變形

題意 編號1 n的盒子,當你的編號滿 b思路 首先要了解一下什麼是階梯博弈,參考鏈結.對於一般的階梯博弈,當到達地面 即0階 的時候就是終止條件,但是這道題由於 a b 2 1 a b 3 0這個條件的限制,所以我們可以知道只有當 a b 6 3的時候才能進行狀態轉移.這道題,我們通過畫圖可以知道,...

HDU 4023 博弈 貪心 模擬 Game

如果硬要說這算是博弈題目的話,那這個博弈是不公平博弈 partizan games 因為雙方面對同乙個局面做出來的決策是不一樣的。我們平時做的博弈都是公平博弈 impartial games 所以在這道題裡面,那些必勝必敗狀態,sg函式sg定理都派不上用場了。但是,這道題是可以貪心的。比如第乙個圖案...