Pac-Takahashi

[ABC301E] Pac-Takahashi

考虑到有猴子的位置最多只有 \(18\) 个,算上起点终点一共 \(20\) 个,然后预处理出这些位置之间的两两距离,这样复杂度不会太高。

然后考虑到可以用状压 DP 解决问题。

状态表示:\(f_{j,i}\) 表示抓到的猴子二进制 01 状态为 \(j\) 的情况下,最后到 \(i\)\(i=0\) 表示起点),而且不会继续前行至其他猴子处的最小步数。

注意本题填表法是不可行的,实际上你并不能确定上次是从哪个地方过来的,所以应该使用刷表法,然后枚举新增的点,就可以方便的确定了。即:

\[f_{j|2^{k-1},k}=f_{j,i}+dis(i,k) \]

还要,状压 DP 必须注意顺序,如果按照 \(i,s\) 的顺序循环,答案是错误的,因为比如状态 \(f[(1010)_2][2],f[(1000)_2][4]\),应当先遍历后者,因为后者可能会更新前者。

posted @ 2023-06-13 12:35  wscqwq  阅读(18)  评论(0编辑  收藏  举报