ABC160 F - Distributing Integers
解法
のみの場合について答えることができればあとはうまく伝播させて全方位木DPにしてしまえばよいので、の場合を考えます。
を根とする部分木についての、数字の配置パターン数
を根とする部分木の頂点数
とします。の計算方法については、よくある問題なので省略します。
数字の配置パターン数、というのは、その部分木に存在する頂点の数字を並び替えた数列のパターン数です。
について考えるとき、子の数列それぞれの要素をいったん同じものとみなして並べ方を考え、最後に子の数列それぞれのパターン数をかければいいことになります。
子それぞれの数列を持ってきて、マージソートのようにしてマージするパターン数がわかれば、の子の集合をとして、
となります。
マージのパターン数は、同じものを含む順列について考えていることになるので、
ここを参考にすればよく、
となります。
これでの場合について解けました。
あとは全方位木DPを用いればよく、それぞれは和と積で構成されているので、今みている頂点から根を子へうつす際に、今見ている頂点についての値を、全頂点についての計算から、うつす子の値を除いたものに計算しなおせばよいです。