1. 程式人生 > >CF 553E Kyoya and Train

CF 553E Kyoya and Train

題目分析

期望\(\text{dp}\)

\(f_{i,j}\)表示在第\(j\)個時刻從\(i\)點出發,到達終點的期望花費。

有轉移方程:
\[ f_{x,t}=\min_{(x,y)\in E}(c_{x,y}+\sum_{i=1}^Tp_{y,i}\cdot f_{y,i+t}) \]

如果直接轉移,時間複雜度是\(O(n \cdot T^2)\)

考慮如何優化。

冷靜分析發現,\(\sum\limits_{i=1}^Tp_{y,i}\cdot f_{y,i+t}\)可以化成卷積形式。

\(g_{y,t}=\sum\limits_{i=1}^Tp_{y,i}\cdot f_{y,i+t}\)

如果我們已知\(f_{y,i}(i\ge t)\),那麼我們可以\(O(m\cdot T\cdot \log T)\)算出\(f_{y,i}(i\ge t)\)\(g_{y,t}\)的貢獻。

如果我們倒著列舉時間\(t\),邊dp邊算貢獻,每個時間\(t\)會計算貢獻\(O(T)\)次,時間複雜度是\(O(m\cdot T^2\cdot \log T)\)

考慮分治\(\text{fft}\)

每次分治區間\([l,r]\),處理完右區間後,統計右區間對左區間的貢獻,再處理左區間。

時間複雜度\(O(m\cdot T\cdot \log T)\),可以接受。

有點卡常,需要手寫\(\text{complex}\)