本来以为 \(m\) 这么小是 \(m\sum k_i\log k\) 的 NTT 的,写完发现一点不用(
首先我们发现,这样的图上面的一个哈密顿回路可以表示成原森林若干条链,每个点都在其中一条链上,且相邻两条链不在同一棵树上。
先跑一个 DP 把 \(f_{i,j}\) 表示用 \(j\) 条链覆盖 \(i\) 的方案数有几种跑出来,然后我们要处理在同一棵树上的链不相邻的限制。我们显然可以设计一个 DP:设 \(dp_{i,j}\) 表示考虑到了前 \(k\) 棵树,有 \(j\) 个相邻的方案数,但是这样子 DP 是 \(O((\sum k)^3)\) 的。
我们需要进行一个斥的容,具体的,先对于每棵树内部钦定若干条链在最终序列中放在一起,然后转移就可以直接合并,这样复杂度就是 \(O((\sum k)^2)\) 的。
注意对第一棵树特殊处理。
标签:P5333,JSOI2019,sum,一棵树,相邻,神经网络,DP From: https://www.cnblogs.com/275307894a/p/17929127.html