hdu4035 Maze 【期望dp + 数学】
題目鏈接
BZOJ4035
題解
神題啊。。。orz
不過網上題解好難看,數學推導不寫\(Latex\)怎么看。。【Latex中毒晚期】
我們由題當然能很快寫出\(dp\)方程
設\(f[i]\)表示從\(u\)出發逃離的期望步數,\(m\)為該點度數
\[ \begin{aligned} f[u] &= K_uf[1] + \frac{1 - K_u - E_u}{m}\sum\limits_{(u,v) \in edge} (f[v] + 1)\\ &= K_uf[1] + \frac{1 - K_u - E_u}{m}f[fa[u]] + \frac{1 - K_u - E_u}{m}\sum\limits_{(u,v) \in edge \& v \ne fa[u]} f[v] + (1 - K_u - E_u)\\ \end{aligned} \]
然后就會發現這個方程似乎有后效性,立即想高斯消元
一看范圍\(n \le 10^4\)什么鬼嘛QAQ。。。
題解是這么說的:
我們設
\[f[u] = A_uf[1] + B_uf[fa[u]] + C_u\]
對于葉子節點,顯然有
\[ \begin{aligned} A_u &= K_u \\ B_u &= 1 - K_u - E_u \\ C_u &= 1 - K_u - E_u \\ \end{aligned} \]
對于非葉節點,我們展開\(f[v]\)
\[ \begin{aligned} f[u] &= K_uf[1] + \frac{1 - K_u - E_u}{m}f[fa[u]] + \frac{1 - K_u - E_u}{m}\sum\limits_{(u,v) \in edge \& v \ne fa[u]} f[v] + (1 - K_u - E_u)\\ &= K_uf[1] + \frac{1 - K_u - E_u}{m}f[fa[u]] + \frac{1 - K_u - E_u}{m}\sum\limits_{(u,v) \in edge \& v \ne fa[u]} (A_vf[1] + B_vf[u] + C_v) + (1 - K_u - E_u)\\ \end{aligned} \]
我們整理一下:
\[f[u] = \frac{K_u + \frac{1 - K_u - E_u}{m}\sum A_v}{1 - \frac{1 - K_u - E_u}{m}\sum B_v}f[1] + \frac{\frac{1 - K_u - E_u}{m}}{1 - \frac{1 - K_u - E_u}{m}\sum B_v}f[fa[u]] + \frac{1 - K_u - E_u - \frac{1 - K_u - E_u}{m}\sum C_v}{1 - \frac{1 - K_u - E_u}{m}\sum B_v}\]
故
\[ \begin{aligned} A_u &= \frac{K_u + \frac{1 - K_u - E_u}{m}\sum A_v}{1 - \frac{1 - K_u - E_u}{m}\sum B_v} \\ B_u &= \frac{\frac{1 - K_u - E_u}{m}}{1 - \frac{1 - K_u - E_u}{m}\sum B_v} \\ C_u &= \frac{1 - K_u - E_u - \frac{1 - K_u - E_u}{m}\sum C_v}{1 - \frac{1 - K_u - E_u}{m}\sum B_v} \\ \end{aligned} \]
然后由于
\[ \begin{aligned} f[1] &= A_1f[1] + B_1 \times 0 + C_1 \\ f[1] &= \frac{C_1}{1 - A_1} \end{aligned} \]
當\(1 - A_1 = 0\)時無解
否則我們能直接計算出\(f[1]\),即為所求
是不是很神奇?
這個式子的推導主要是利用了式子中有\(f[fa[u]]\)這一項,從而可以從兒子中遞推出父親的信息
轉載于:https://www.cnblogs.com/Mychael/p/9077231.html
總結
以上是生活随笔為你收集整理的hdu4035 Maze 【期望dp + 数学】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [LeetCode] Flatten B
- 下一篇: 《重构:改善既有代码的设计》-学习笔记一