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]\),应当先遍历后者,因为后者可能会更新前者。