p1850-solution
P1850 Solution
看到最小期望值,考虑dp。
由于点的数量小于 \(300\),我们可以先用 Floyd 预处理出两点之间的最短路。
设 \(dp_{i,j,0/1}\) 表示前 \(i\) 间教室申请了 \(j\) 间,第 \(i\) 间教室是否申请的最小期望长度。
下面设 \(a\) 表示 \(c_{i-1}\),\(b\) 表示 \(d_{i-1}\),\(c\) 表示 \(c_i\),\(d\) 表示 \(d_i\)。
初始化:\(dp_{1,0,0}=dp_{1,1,1}=0\)。
转移:如果第 \(i\) 间教室不申请,
\(dp_{i,j,0}=\min\{dp_{i-1,j,0}+dis_{a,c},dp_{i-1,j,1}+dis_{b,c}\times k_{i-1}+dis_{a,c}\times (1-k_{i-1})\}\)
如果第 \(i\) 间教室申请,
\(dp_{i,j,1}=\min\{dp_{i-1,j-1,0}+dis_{a,d}\times k_i+dis_{a,c}\times (1-k_i)\ \ ,\ \ dp_{i-1,j-1,1}+dis_{b,d}\times k_{i-1}\times k_i+dis_{a,d}\times(1-k_{i-1})\times k_i+dis_{b,c}\times k_{i-1}\times(1-k_i)+dis_{a,c}\times(1-k_{i-1})\times(1-k_i)\}\)
最后输出 \(\min\{dp_{n,i,0/1}\},i\in[0,m]\) 即可。

浙公网安备 33010602011771号