H 是拉反求解通项公式的应用

G

这个问题不好直接做,考虑转化为一个好求的问题。

原问题等价于求最小的 \(x\) 使得(或判断无解):

\[\begin{aligned} \frac{2}{9}(10 ^ x - 1) &\equiv 0 \pmod{k} \\ 2(10 ^ x - 1) &\equiv 0 \pmod{9k} \\ 10 ^ x &\equiv 1 \pmod{\frac{9k}{\gcd(k, 2)}} \end{aligned} \]

\(p = \frac{9k}{\gcd(k, 2)}\),当 \(\gcd(10, p) \ne 1\) 时原问题显然无解。

否则等价于求 \(10\) 在模 \(p\) 意义下的阶,一定有 \(ord_{p} 10 \mid \varphi(p)\),求出 \(\varphi(p)\) 后暴力枚举约数即可,复杂度 \(\mathcal{O}(T\sqrt{n} \log n)\)

H

考虑如何判定一颗二叉树是合法的,有如下观察:

  • 每个位置上为 \(1\) 的数(除了根)必须要向上移动。

因此原问题中的移动次数 \(n - 1\) 其实是这个移动问题最优情况的答案下界,考虑何时满足这种情况:

  • 根节点上数字为 \(1\)
  • 若一个节点上为 \(1\) 那么它的 \(2\) 级祖先必有至少一个节点上为 \(1\)

考虑 \(\rm dp\),令 \(f_i, g_i\) 分别表示 \(i\) 个点,根节点填的数字为 \(0/1\) 的合法方案,枚举左右子树大小转移:

\[f_i = \sum\limits_{j < i} (f_j + g_j) \times (f_{i - j - 1} + g_{i - j - 1}) \]

\[g_i = \sum\limits_{j \le i} f_j \times f_{i - j} \]

边界我们考虑人为构造成 \(f_0 = 1, g_0 = 0\)

注意到转移是卷积的形式,于是我们构造两个关于 \(f, g\)\(\mathrm{OGF}:F(x), G(x)\),于是有:

\[\begin{aligned} & \ \ \ \ \ \ \ \ \ F(x) = x(F(x) + G(x)) ^ 2 + 1, G(x) = F ^ 2(x) - 1 \\ &\Longleftrightarrow F(x) = x(F ^ 2(x) + F(x) - 1) ^ 2 + 1 \end{aligned} \]

将两边展开后为四次方程,很难求根展开,考虑换一个方式求解通项公式。

注意到 \(x\) 出现仅出现一次且为一次式,不妨借助拉格朗日反演,考虑如此构造求出 \(F(x)\) 的复合逆 \(G(x)\)

\[\begin{aligned} & \ \ \ \ \ \ \ \ G(F(x)) = x = \frac{F(x) - 1}{(F ^ 2(x) + F(x) - 1) ^ 2} \\ &\Longleftrightarrow G(x) = \frac{x - 1}{(x ^ 2 + x - 1) ^ 2} \end{aligned} \]

应用拉格朗日反演公式,有:

\[\begin{aligned} [x ^ n]F(x) &= \frac{1}{n}[x ^ {n - 1}]\left(\frac{x}{G(x)}\right) ^ n \\ &= \frac{1}{n}[x ^ {n - 1}]\left(\frac{x(x ^ 2 + x - 1) ^ 2}{x - 1}\right) ^ n \end{aligned} \]

注意到后半部分分母部分不好处理,发现问题来源在于 \(G(x)\) 分子为 \(x - 1\)\(\frac{x}{G(x)}\) 没有抵消,于是考虑换元:

\[H(x) = F(x) - 1 = x((H(x) + 1) ^ 2 + H(x)) ^ 2 \]

可以用同样的方法构造出 \(H(x)\) 的复合逆 \(G(x) = \frac{x}{((x + 1) ^ 2 + x) ^ 2} = \frac{x}{(x ^ 2 + 3x + 1) ^ 2}\),此时应用拉格朗日反演公式:

\[\begin{aligned} [x ^ n]F(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} \\ &= \frac{1}{n} \sum\limits_i ^ {\lfloor \frac{n - 1}{2} \rfloor} \dbinom{2n}{i ~~~ n - 2i - 1 ~~~ n + i + 1}3 ^ {n - 2i - 1}\\ \end{aligned} \]

直接计算即可,复杂度 \(\mathcal{O}(n)\)

GO!