AT_abc189_f [ABC189F] Sugoroku2
AT_abc189_f [ABC189F] Sugoroku2 - 洛谷
\(dp_{i}\) 表示位于 \(i\) 位置,还要转多少次到终点。
\(dp_n=0\)
可能前进,可能返回起点:
\[\begin{equation}
\begin{aligned}
dp_i=1&+\sum_{w=1,A_{i+w}不是返回起点格子}^{M}dp_{i+w}\times \frac{1}{M}\\
&+\sum_{w=1,A_{i_w}是返回起点格子}^{M}dp_0\times \frac{1}{M}
\end{aligned}
\end{equation}
\]
其中 \(w\) 表示选到的前进步数
一共有 \(n+1\) 个柿子和未知数。可以高斯消元吗?复杂度不对。
回想之前做过一个题,里面是类似这样的柿子,我们待定系数法使得柿子里面某些东西可以 \(O(n)\) 推出。
在此之前——我的转移柿子有点太鬼畜了。简单点:
\[\begin{equation}
\begin{aligned}
dp_i= \begin{cases}
\sum_{w=1}^{M}dp_{i+w}\times \frac{1}{M}+1 & \text {if}{\ i\notin A}\\
dp_0 & \text{if}{\ i\in A} \\
0 & \text{i=n}\\
\end{cases}
\end{aligned}
\end{equation}
\]
其中 \(A\) 表示“返回起点”格子。
我们正式开始化简。
由于我们的答案是 \(dp_0\),我们设 \(dp_i=k_i \times dp_0+b_i\)
其中 \(k_0=1,b_0=0\)
\[\begin{equation}
\begin{aligned}
dp_i= \begin{cases}
\frac{\sum_{w=1}^{M}(k_{i+w}\times dp_0+b_{i+w})}{M}+1 & \text {if}{\ i\notin A}\\
dp_0 & \text{if}{\ i\in A} \\
0 & \text{i=n}\\
\end{cases}
\end{aligned}
\end{equation}
\]
考察当 \(i\notin A\):
\[\begin{equation}
\begin{aligned}
dp_i&=\frac{dp_0\sum_{w=1}^{M}k_{i+w}+\sum_{w=1}^{M}b_{i+w}}{M}+1\\
&=\frac{\sum_{w=1}^{M}k_{i+w}}{M}dp_0+\frac{\sum_{w=1}^{M}b_{i+w}}{M}+1\\\
&=k_i\times dp_0+b_i
\end{aligned}
\end{equation}
\]
我们发现此时 \(k_i=\frac{\sum_{w=1}^{M}k_{i+w}}{M}\) ,\(b_i=\frac{\sum_{w=1}^{M}b_{i+w}}{M}+1\)
当 \(i\in A\) \(k_i=1 , b_i =0\) 。
考虑转移的时候突然发现 \(i+w\ge n\) 不该对计数产生贡献,此时 \(k_{i+w},b_{i+w}\) 计为 \(0\)
感觉下来就是某些位置上有初值,然后从 \(n\) 向 \(0\) 推待定系数。
最后可以得到 \(dp_0=k_0 \times dp_0 +b_0\)
注意:这与 \(k_0=1,b_0=0\) 并不互斥。但是观看第一个样例,发现我们不该提前赋值。
然后可以开心解出 \(dp_0\)。除数为零为无解。

浙公网安备 33010602011771号