闲话

我要学符号化方法!
知识面被狠狠踩了!
所以这几天闲话可能会比较水吧(

今日推歌:命运 / Fate (Type.B) - Yasuha. feat. 初音ミク
其他几首也各有风味呢!可以听一听!

杂题

ABC222H

对于一个正整数 \(n\),我们称满足以下条件的有根二叉树是一棵美丽的 \(n\) 阶二叉树。

  • 每个节点有一个数字 \(0\)\(1\),节点 \(i\) 的数字记为 \(a_i\)
  • 每个叶子节点的数字定是 \(1\)
  • 可以通过进行如下的操作至多 \(n - 1\) 次,使得最终根节点上的数字为 \(n\),其余节点的数字是 \(0\)
    • 选择两个节点 \(u, v\),其中 \(u\) 需要是 \(v\) 的父节点或父节点的父节点。作赋值 \(a_u\leftarrow a_u + a_v, a_v\leftarrow 0\)

给定 \(n\),请计算美丽的 \(n\) 阶二叉树的数量。答案对 \(998244353\) 取模。

\(n \le 10^7\)

ABC 也要科技普及!

观察可以得到,一棵二叉树是美丽的,当且仅当其根节点的数字是 \(1\),且不存在一条边两端点的数字均为 \(0\)

考虑一个朴素的 dp。我们令 \(f(n, 0/1)\) 为根节点的数字为 \(0/1\) 的美丽 \(n\) 阶二叉树的数量,可以通过枚举儿子的数量得到转移

\[f(n, 0) = 2f(n, 1) + \sum_{i = 0}^n f(i, 1) \times f(n - i,1) \quad f(1, 0) = 0
\]

\[f(n, 1) = 2\left(f(n - 1, 0) + f(n - 1, 1)\right) + \sum_{i = 0}^{n - 1} \left(f(i, 0) + f(i, 1)\right)\times \left(f(n - 1 - i, 0) + f(n - 1 - i, 1)\right)\quad f(1, 1) = 1
\]

这个形式很像卷积,我们不妨构造生成函数来刻画这个性质。设 \(F_{0/1}(x)\)\(f(n, 0/1)\) 的普通生成函数。下面由于占位元均为 \(x\),简略表示 \(F_{0/1}(x)\)\(F_{0/1}\)。对比形式不难将上面的转移写作

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

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

带入 \(F_0\) 的表达式到 \(F_1\) 表达式中得到

\[F_1 = x\left(F_1^2 + 3F_1 + 1\right)^2
\]

我们能发现

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

这启发我们寻找 \(F_1\) 的复合逆,设它为 \(G(x)\)。当然 \(G\) 的形式可以直接写出,就是

\[G(x) = \frac{x}{\left(x^2 + 3x + 1\right)^2}
\]

应用拉格朗日反演可以得到

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

因此我们现在只需要着眼于

\[[x^n] \left(x^2 + 3x + 1\right)^{2n}
\]

容易发现 \(H(x) = \left(x^2 + 3x + 1\right)^{2n}\) 微分有限,可以递推。可以直接求 ODE,写出得到

\[H'(x) = 2n\left(x^2 + 3x + 1\right)^{2n - 1}(2x + 3) = 2n\frac{H(x)(2x + 3)}{x^2 + 3x + 1}
\]

也就是

\[H'(x)\left(x^2 + 3x + 1\right) = 2n(2x + 3)H(x)
\]

两边提取 \(x^k\) 项系数可以得到

\[(k - 1) H[k - 1] + 3k H[k] + (k + 1) H[k + 1] = 4n H[k - 1] + 6n H[k]
\]

化简可以得到

\[kH[k] = (6n - 3k + 3)H[k - 1] + (4n - k + 2) H[k - 2]
\]

初值有 \(H[0] = 1, H[1] = 6n\),递推后带入 \(H[n - 1]\) 到原式即可。

总时间复杂度 \(O(n)\)

Submission.



AGC010E

容易发现不互质的一系列数字在 Bob 调整的时候相对顺序不会变,从这点着手。
我们对每个元素建点,两个不互质的元素间连边,这能组成一个图。
先手需要的是对这个图里每个联通块定向,这些定了向的边表示最后的顺序中不变的相对顺序,因此贪心地从每个联通块内对应元素最小的点开始,从小到大扫描这个联通块。这样就能定向,得到一个 dag 图。
后手需要的是对这个 dag 图得到一组最大的拓扑排序的结果,因此直接用优先队列维护即可。
总时间复杂度 \(O(n^2)\)

Submission.