记录:1 \(\quad\) 2 \(\quad\) 3 \(\quad\) 4 \(\quad\) 5 \(\quad\) 6,7 \(\quad\) 9 \(\quad\) 11
题单:
https://www.mxoj.net/training/T1578?groupId=1124&returnUrl=/training/listForGroup?groupId=1124
令 \(M=509\)
以 \(M\) 为单位分块,令 \(f_{i,j}\) 表示走到位置 \((Mi,j)\),且下一步只能向下的方案数,初始 \(f_{0,\ast}=1\),答案为 \(f_{\frac nM,n}\)
若不考虑障碍,假定 \(f_{i,<0}=0\),则
\[\begin{aligned}
f_{i,j}\equiv&\sum_{k\le j} \binom{M-1+(j-k)}{M-1} f_{i-1,k}\\
\equiv&\sum_{k\le j} \binom{\left\lfloor\frac{M-1+(j-k)}M\right\rfloor}{0}\binom{(M-1+(j-k))\bmod M}{M-1} f_{i-1,k}\\
\equiv&\sum_{k\le j}\binom{(M-1+(j-k))\bmod M}{M-1} f_{i-1,k}\\
\equiv&\sum_{k\le j}[(M-1+(j-k))\bmod M=M-1]f_{i-1,k}\\
\equiv&\sum_{k\le j}[M\mid (j-k)]f_{i-1,k}\\
\equiv&\sum_{k\le j-M}[M\mid (j-k)]f_{i-1,k}+\sum_{j-M<k\le j}[M\mid (j-k)]f_{i-1,k}\\
\equiv&f_{i,j-M}+f_{i-1,j}\pmod M\\
\end{aligned}\]
令 \(l=(i-1)M,r=iM\) 表示当前考虑范围为 \((l,r]\),考虑 \(a_{l+1\sim r}\) 的障碍对答案的贡献
令 \(g_x\) 表示从 \((0,0)\) 出发到达 \((a_x,x)\),中间不经过其他障碍的方案数,则 \(\forall x\in(l,r]\),有
\[\begin{aligned}
g_x\equiv&\sum_{j\le a_x} \binom{x+a_x-j-l-1}{x-l-1} f_{i-1,j}-\sum_{l<y<x,a_y\le a_x} \binom{x+a_x-y-a_y}{x-y} g_y\\
\equiv&\sum_{j\le a_x} \binom{(x+a_x-j-l-1)\bmod M}{x-l-1} f_{i-1,j}-\sum_{l<y<x,a_y\le a_x} \binom{(x+a_x-y-a_y)\bmod M}{x-y} g_y\pmod M\\
\end{aligned}
\]
考虑如何快速计算前一项
\[\begin{aligned}
&\sum_{j\le a_x} \binom{(x+a_x-j-l-1)\bmod M}{x-l-1} f_{i-1,j}\\
\equiv&\sum_{0\le j\le a_x} \binom{(x-l-1+j)\bmod M}{x-l-1} f_{i-1,a_x-j}\\
\equiv&\sum_{0\le j\le a_x}[x-l-1+j \bmod M<M] \binom{x-l-1+j\bmod M}{x-l-1} f_{i-1,a_x-j}\\
\equiv&\sum_{0\le j\le a_x}[j\bmod M<M-(x-l-1)] \binom{x-l-1+j\bmod M}{x-l-1} f_{i-1,a_x-j}\\
\equiv&\sum_{0\le j\le a_x}[j\bmod M\le M-(x-l)] \binom{x-l-1+j\bmod M}{x-l-1} f_{i-1,a_x-j}\\
\equiv&\sum_{0\le o\le M-(x-l)}\binom{x-l-1+o}{x-l-1} \sum_{j\le a_x,j\equiv o\pmod M}f_{i-1,a_x-j}\\
\equiv&\sum_{0\le o\le M-(x-l)}\binom{x-l-1+o}{x-l-1} f_{i,a_x-o}\pmod M\\
\end{aligned}
\]
从而
\[g_x\equiv \sum_{0\le o\le M-(x-l)}\binom{x-l-1+o}{x-l-1} f_{i,a_x-o}-\sum_{l<y<x,a_y\le a_x} \binom{(x+a_x-y-a_y)\bmod M}{x-y} g_y\pmod M
\]
容易做到 \(O(M)\)
然后考虑 \(g_x\) 对答案的贡献
设所有 \(g_x(l<x\le r)\) 对 \(f_{i,j}\) 的贡献为 \(h_j\)(即 \(f_{i,j}\gets f_{i,j}-h_j\)),则
\[\begin{aligned}
h_j\equiv& \sum_x \binom{r+j-x-a_x}{r-x} g_x\\
\equiv& \sum_x \binom{(r+j-x-a_x)\bmod M}{r-x} g_x\\
\equiv& \sum_x[(j-a_x)\bmod M<M-(r-x)] \binom{(r+j-x-a_x)\bmod M}{r-x} g_x\\
\end{aligned}\]
即一个 \(g_x\) 对任意满足 \((j-a_x)\bmod M<M-(r-x)\) 的 \(h_j\) 的贡献系数为 \(\binom{(r+j-x-a_x)\bmod M}{r-x}\)
对于一个 \(g_x\),枚举 \(o=(j-a_x)\bmod M\in [0,M-(r-x+1)]\),则令 \(h_{o+a_x+UM}\mid U\in\mathbb N\) 加上 \(\binom{r-x+o}{r-x}g_x\),差分优化即可
总时间复杂度 \(O(\frac nM(n+M^2))=O(nM+\frac{n^2}M)\)
代码
参考
显然答案的下界为树的最大深度(假定根深度为 \(1\)),此时同一深度的点字符相同
设 \(dd_d\) 为深度等于 \(d\) 的点的数量,则 \(x\) 等于 \(\{dd\}\) 的子集和时答案可以取到下界
假定无法这样表示,以下通过构造证明可以取到下界加一:按深度从小到大枚举,设当前枚举到 \(dd_d\),若剩余的 \(\text{'a'}\) 数量或 \(\text{'b'}\) 数量不小于 \(dd_d\) 则用对应字符填充当前层,否则当前层中非叶子结点数量一定不超过未填充结点的数量,用 \(\text{'a'}\) 和 \(\text{'b'}\) 中较多的一种填充当前层中的点,优先填充非叶子结点,显然数量为最大深度加一
问题转化为给定 \(\{dd\}\),判定能否用子集和表示 \(x\)
由于 \(\sum dd=O(n)\),因此 \(dd\) 中不同数字数量为 \(O(\sqrt n)\) 的,用 bitset 容易做到时间复杂度 \(O(\frac{n^2}\omega)\),空间复杂度 \(O(\frac{n\sqrt n}\omega)\)
构造方案是容易的
代码
参考