LOJ 3400 Storm & CodeChef SELEDGE 命题报告(下)

关于本文

SELEDGE 是我在 CodeChef 网站上命制的题目。

后来我将该题改编为集训队作业自选题,并由 EI 鸽鸽将其公开在了 LOJ 上(赞美 EI !),题号是 LOJ 3400 。本文将以 LOJ 上的题目版本为准。

本文分为上、下两个部分,前者基本上是复制粘贴自己先前写的题解,后者是对解法二的复杂度上界进行了改进。

解法二的复杂度分析

之前关于解法二,我们给出了 \(O\big(\left(N+M\right)+F_KC_K\,\mathrm{poly}\left(K\right)\big)\) 的复杂度上界,但这个界既不够简洁也不够紧。

在本节中我们将会:

  • 将这个上界改写为更简洁的形式(上界一)。
  • 将上界一改进,得到上界二。
  • 将上界二改进,得到上界三。
  • 讨论进一步改进的可能性。

上界一

引理1:\(C_n=\Theta\left(4^n\cdot n^{-3/2}\right)\) ,其中 \(C\) 表示卡特兰数。(证明

引理2:\(F_n=\Theta\left(\varphi^n\right)\) ,其中 \(F\) 表示斐波那契数,\(\varphi\approx 1.618\) 表示黄金比例。(由斐波那契数通项公式易得)

那么原先的界可以改写为 \(O\big(\left(N+M\right)+(4\varphi)^K\,\mathrm{poly}\left(K\right)\big)\) 。幂底数 \(4\varphi\) 约等于 \(6.472\)

上界二

回顾一下复杂度上界中 \(F_K\)\(C_K\) 的含义:

  • \(F_K\) :把根结点的至多 \(K\) 个儿子划分的方案数上界。
  • \(C_K\) :树的形态的方案数上界。

更准确地说:

  • 当根结点恰有 \(d\) 个儿子时,划分儿子的方案数为 \(F_d\) 。而 \(F_K\) 就等于 \(\max_d F_d\) ,且在忽略多项式因子后等于 \(\sum_d F_d\)
  • 当根结点恰有 \(d\) 个儿子时,不妨记树的形态的方案数为 \(C_{K,d}\) 。而 \(C_K\) 就等于 \(\sum_d C_{K,d}\) ,且在忽略多项式因子后等于 \(\max_d C_{K,d}\)
  • 于是 \(F_KC_K\) 就是实际的总方案数 \(\sum_d F_dC_{K,d}\) 的上界。

注意到: \(F_d\)\(d\) 的上升而急剧上升,但当 \(d\) 接近于上限 \(K\) 时,\(C_{K,d}\) 的值是很小的。

也就是说,和式 \(\sum_d F_dC_{K,d}\) 中, \(F_d\) 的最大值与 \(C_{K,d}\) 的最大值是错位的。我们将利用这一错位来改进上界。

先给出 \(C_{K,d}\) 的上界: \(C_{K,d}\leq C_{K-d}{K-1 \choose K-d}\) 。理由是:

  • 在原树中将根结点删去,会得到一个森林。将这个森林中所有根结点合并,会得到一棵 \(K-d+1\) 个结点的树 \(T\) ,树 \(T\) 的可能形态有 \(C_{K-d}\) 种。\(T\) 中所有深度为 1 的点,是原先的树中所有深度为 2 的点。
  • 要想还原出原先的树,还需要对 \(T\) 的根结点的每个儿子,确定其在原树中的父亲是谁。也就是说,需要把 \(T\) 中深度为 1 的结点划分成 \(d\) 个(长度任意、不一定非空的)连续段。深度为 1 的结点至多有 \(K-d\) 个,于是由插板法,方案数至多是 \({(K-d)+d-1 \choose d-1}={K-1\choose K-d}\)

于是原先的上界可以改进为:(下式中求和指标 \(i\) 表示 \(K-d\)

\[\begin{align} &\phantom{\ =} \sum\limits_{i=0}^{K-1} C_i{K-1 \choose i}F_{K-i} \notag\\ &=O\left( \mathrm{poly}(K)\cdot\sum\limits_{i=0}^{K-1} 4^i{K-1 \choose i}\varphi^{K-i} \right)\notag\\ &=O\left( \mathrm{poly}(K)\cdot\varphi^K \sum\limits_{i=0}^{K-1} {K-1 \choose i}\left(\frac{4}{\varphi}\right)^i \right)\notag\\ &=O\left( \mathrm{poly}(K)\cdot\varphi^K \left(1+\frac{4}{\varphi}\right)^{K-1} \right)\notag\\ &=O\left( \mathrm{poly}(K)\cdot\left(4+\varphi\right)^K \right)\notag \end{align} \]

综上,解法二的复杂度为 \(O\big(\left(N+M\right)+(4+\varphi)^K\,\mathrm{poly}\left(K\right)\big)\) 。幂底数 \(4+\varphi\) 约等于 \(5.618\)

上界三

原文已删除】

上界三它假了,大家散了吧。

😭😭😭

进一步的改进

改进思路一

在上界三的推导中,我们做了一步“用均值的幂来作为下降幂的上界”的转化(即引理3)。

如果把这个转化改为直接使用斯特林公式(或者说用 \(e^{\int\log x}\) 来近似下降幂),再利用两个因子的最大值的错位,那么应该能够得到比上界二更紧的界。

但我已经推麻了,我不想推了。😭

改进思路二

\(C_{K,d}\) 的表达式是能求出来的。

\(F(x)=\frac{1-\sqrt{1-4x}}{2x}\) 为卡特兰数 OGF ,则对于固定的 \(d\)\(C_{K,d}\) 关于 \(K\) 的 OGF 是 \(\left(xF(x)\right)^d\)

\(F(x)\) 又有 \(F^2(x)=\frac{F(x)-1}{x}\) 这个性质,于是易见任何 \(F^n(x)\) 都可以表出为 \(\frac{P_n(x)F(x)+Q_n(x)}{x^{n-1}}\) 的形式,其中多项式 \(P_n,Q_n\) 的系数是 OEIS A102426

进而可以得到 \(C_{K,d}\) 的通项,我算了算大概是

\[\sum_{i=0}^{\lfloor(d-1)/2\rfloor} (-1)^i{\lfloor d/2\rfloor +i \choose \lfloor (d-1)/2\rfloor -i}C_{K-i-1} \]

然而这个 \((-1)^i\) 好像很难办,一般的求上界方法对交错和好像都不太管用。不懂,也许有牛逼做法呢。

posted @ 2021-05-18 18:11  TianyiQ  阅读(292)  评论(0编辑  收藏  举报