1. 程式人生 > 其它 >【CF1267G】Game Relics(貪心,期望)

【CF1267G】Game Relics(貪心,期望)

題意:

\(n\) 種物品,你要全部獲得它們。有兩種購買方式:

  1. 花費 \(c_i\) 購買第 \(i\) 種物品。
  2. 花費 \(x\),然後隨機獲得一種物品,如果該種物品已經被獲得過了,它將返還你 \(\frac x2\) 的錢。

求最優策略下,獲得這 \(n\) 種物品的期望花費。

\(n\leq 100\)\(x,\sum c_i\leq 10000\)

題解:

考慮將物品分成兩類:

第一類物品滿足 \(c_i\leq \frac x2\)。對於這類物品,如果先抽中了它,那麼花費 \(x\);但如果我們先把它買下,那麼同樣抽中它,但只會花費 \(c_i+\frac x2\leq x\)。所以這類物品我們一定先買下。

第二類物品滿足 \(c_i>\frac x2\)。對於這類物品,如果我們先買了它、而在之後有抽獎,那麼如果我們把抽獎操作提前,那麼如果抽中它,此時只用花費 \(x\),但原來花費了 \(c_i+\frac x2>x\);如果沒抽中它,那麼我們再買下它和在抽之前買下它是等價的。所以對於這類物品,我們顯然是先抽獎,然後在某個時刻把剩下沒抽中的物品全部買光。既然是這樣,我們不妨將原題目的第一種購買方式變為隨機選一個未購買的物品 \(i\) 並花費 \(c_i\) 購買它,因為反正在最優策略下隨不隨機是一樣的。

提前處理好第一類物品,現在只考慮第二類物品。假設當前還剩 \(k\) 個物品,那麼如果使用抽獎,抽中一個新物品的期望花費是隻跟 \(k\)

有關的,記為 \(d_k\)。假設剩下的這 \(k\) 個物品的 \(c_i\) 的和為 \(S\),我們要決策當前是隨機買還是抽獎。由於這兩種決策到某種後繼狀態的概率是相同的,所以我們只需考慮當前步的期望花費最小即可,也就是 \(d_k\)\(\frac Sk\) 的比較。

知道了策略之後如何求答案?注意到 \(\sum c_i\) 不大,直接 DP 即可。