Connecting...

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\)。除数为零为无解。

posted @ 2025-07-28 16:53  余亦宸  阅读(9)  评论(0)    收藏  举报