Loading

AT_abc222_h [ABC222H] Beautiful Binary Tree

考虑条件本质上相当于什么:

  • 根结点必须得是 \(1\)
  • 原树中有 \(n\)\(1\)
  • 每一次操作必须将一个 \(1\) 合并到一个 \(\ge 1\) 的位置。

容易设 \(f_{i, 0/1}\) 为子树中有 \(n\) 个黑点,根到底是不是黑点(\(0\) 表示是黑点,\(1\) 表示都可以)的合法树种类,类似卡特兰数一样的转移有:

\[f_{n, 0} = 2f_{n, 1} + \sum_{i + j = n}f_{i, 1}f_{j, 1} \]

\[f_{n, 1} = 2(f_{n - 1, 0} + f_{n - 1, 1}) + \sum_{i + j + 1 = n}(f_{i, 0} + f_{i, 1})(f_{j, 0} + f_{j, 1}) \]

列出其 GF 形式,有:

\[F_0 = 2F_1 + F_1^2 \]

\[F_1 = x + 2x(F_0 + F_1) + x(F_0 + F_1)^2 \]

这里 \(F_1\) 里要加 \(x\) 是因为初始化时 \(f_{1,1} = 1\)

考虑此时解得:

\[x = \frac{F_1}{(F_1^2 + 3F_1 + 1)^2} \]

由于 \([x^0]F_1(x) = 0\),此时 \(F_1\) 有复合逆 \(G(x) = \frac{x}{(x^2 + 3x + 1)^2}\),考虑拉格朗日反演:

\[[x^n]F_1 (x) = \frac{1}{n}[x^{n - 1}]\left(\frac{x}{G(x)}\right)^n \]

此时发现得到 \([x^n]F_1(x) = \frac{1}{n}[x^{n - 1}](x^2 + 3x + 1)^{2n}\)

去网上学习一下三项式展开具体系数,这道题就能在 \(O(n)\) 的时间复杂度内解决了。

posted @ 2026-01-15 20:41  Alexande  阅读(1)  评论(0)    收藏  举报