題目大意:
有\(n\)輪比賽,最終成績由這 n 輪比賽中贏的輪數決定。如果在第 i 輪比賽賽選擇積極應戰,並且前 i-1 輪比賽中取得了 j 勝的話,那麼第 i 輪比賽的勝率概率為\(p[i][j]\),這裡我們保證了對於同乙個 i,\(p[i][j]\) 關於 j 的上公升保持單調不上公升(也就是說 \(p[i][j] >= p[i][j+1]\))。可以在某些輪比賽採取第二種策略,故意求敗,也就是以 100% 的概率輸掉該輪比賽,從而使之後的勝率可能更高, 現在已知看到了整個 p 陣列,求乙個最優的策略,使得期望贏的輪數最大。
期望概率dp.
期望dp不好搞,其實可以用概率dp來寫.
最優情況下\(f[i][j]\)表示前\(i\)輪贏了\(j\)輪的概率是多少,轉移方程就是:\(f[i][j] = f[i - 1][j - 1] * p[i][j - 1] + f[i - 1][j] * (1 - p[i][j])\).
然後統計答案就是:\(f[n][j] * j\).
至於為啥沒有考慮第二種策略就是最優的....我也不知道
11.5更新:
好了現在我知道為啥沒有第二種策略是最優的, 先設幾個東西, \(p1\)表示p[1][0], \(p2\)表示p[2][0], \(p3\)表示p[2][1].
我們強制使用策略二, 可以獲勝的輪數的期望是 : \(p2 * 1 = p2\);
我們不強制使用策略二, 可以獲勝的輪數的期望是 : \(p1 * p3 * 2 + (1 - p1) * p2 * 1 + p1 * (1 - p3) * 1 = p1 * p3 + p1 + p2 - p1 * p2 = p1 * p3 + p2 + p1(1 - p2)\);
然後我們讓兩個式子都減去\(p2\), 那麼一式變成了0, 二式變成了\(p1 * p3 + p1 * (1 - p2)\),顯然二式大於零.
然後模擬到多個應該也是一樣的, 所以不使用策略二肯定更優.
這道題當然也可以用期望dp來寫:
設\(f[i][j]\) 表示已經贏了\(j\)場, 從\(i + 1\)到\(n\) 的期望贏得場數, 可以得到dp轉移方程:
\(f[i][j] = max(f[i + 1][j], (f[i + 1][j + 1] + 1) * p[i][j] + f[i + 1][j] * (1 - p[i][j])\);
前半部分表示使用策略二, 後半部分表示第\(i\)場贏 + 第\(i\)場輸.
這個是概率dp的方程:
#include using namespace std;
const int n = 1005;
int n;
double ans, p[n][n], f[n][n];
int main()
概率一般正著求, 期望一般倒著求. 題解 2020 10 24 考試 T4 模板
題目傳送門 有乙個 n 個點組成的樹,有 m 次操作,每次將 1 to x 的路徑上每個點都加入乙個顏色為 c 的小球。但是每個點都有大小限制,即小球個數超過一定量之後就不能再加入了。有 q 次查詢,問操作完了之後每個點有多少種不同顏色的小球。sto llsw yyds orz 以下皆為 llsw ...
T4模板語法
t4,即4個t開頭的英文本母組合 text template transformation toolkit。t4文字模板,即一種自定義規則的 生成器。根據業務模型可生成任何形式的文字檔案或供程式呼叫的字串。模型以適合於應用程式域的形式包含資訊,並且可以在應用程式的生存期更改 template deb...
T4模板 入門
t4模板作為vs自帶的一套 生成器,功能有多強大我也不知道,最近查詢了一些資料學習一下,做個筆記 更詳細的資料參見 msdn 你必須懂的t4模板 深入淺出 t4模板是沒有顏色高亮提示的,我們可以安裝vs支援的外掛程式,我安裝的是 t4 editor,當然還有其他比如 visual t4等,t4模板分...