理论
以每个点为转移显然不行。因为贡献和之前的长度有关。
因此考虑集合之间的转移。设从节点 $j$ 出发开始挖要转移到集合 $S(j \notin S)$,他到起点的距离为 $i$ , 设他从集合 $S_2$ 转移过来,则可写出这样的方程:
$$f(i,j,S)=\underset{j\in S_2\in S}{\min}(f(i,j,S-S_2)+(i+1)\times g(j,k)+f(i+1,k,S2-{k}))$$
实践
1 | typedef long long ll; |
以每个点为转移显然不行。因为贡献和之前的长度有关。
因此考虑集合之间的转移。设从节点 $j$ 出发开始挖要转移到集合 $S(j \notin S)$,他到起点的距离为 $i$ , 设他从集合 $S_2$ 转移过来,则可写出这样的方程:
$$f(i,j,S)=\underset{j\in S_2\in S}{\min}(f(i,j,S-S_2)+(i+1)\times g(j,k)+f(i+1,k,S2-{k}))$$
1 | typedef long long ll; |