# 老yd与并查集:题解 出题人解法:按终止路径的两种步数枚举,用组合数计算路径数量。Codex(GPT-6)的贡献是精确有理数界、模数表空间整理、证明与标准 C++17 实现。组合计数、阶乘逆元与相邻分数分母引理均为经典方法。 ## 展开到第一次越过阈值 固定查询,令 $t=n-B\ge0$ .一条递归路径使用 $a$ 次减一和 $b$ 次减 $e$ ,叶子贡献为 $A C^aD^b$ .路径终止当且仅当 $$a+eb>t,$$ 且去掉最后一步后的总减量不超过 $t$ .每步减量为正,故只要这个倒数第二位置合法,更早位置也全部合法。 ![查询三时递归展开到两个叶子](assets/explanation.svg) 图对应第一个样例的 $n=3$ :两个叶子值均为一,权重分别为七、四。 当 $b=0$ 时只有 $a=t+1$ ,贡献为 $C^{t+1}$ ,最后统一乘 $A$ . 对 $b\ge1$ ,记 $$L_b=\max(0,t-\lfloor eb\rfloor),\qquad R_b=\begin{cases}t,&b=1,\\t-\lfloor e(b-1)\rfloor-1,&b>1.\end{cases}$$ 条件 $a+eb>t$ 给出 $a\ge L_b$ .若最后一步是减 $e$ ,倒数第二位置要求 $a+e(b-1)\le t$ ,给出 $a\le R_b$ ;$b=1$ 需要单独保留整数边界。若 $R_b<0$ ,更大的 $b$ 也不可能,停止枚举。 当 $a=L_b>0$ 时,最后一步既可以减一,也可以减 $e$ ,两种数量相加为 $$\binom{a+b-1}{a-1}+\binom{a+b-1}{a}=\binom{a+b}{a}.$$ 当 $L_b=0$ 时只能最后减 $e$ ,但数量仍是 $\binom b0=1$ .当 $a>L_b$ 时只能最后减 $e$ ,数量为 $\binom{a+b-1}{a}$ .因此答案为 $$A\left(C^{t+1}+\sum_{b\ge1:R_b\ge0}D^b\left[\binom{L_b+b}{L_b}C^{L_b}+\sum_{a=L_b+1}^{R_b}\binom{a+b-1}{a}C^a\right]\right)\pmod{10^9+7}.$$ 相邻的 $\lfloor eb\rfloor$ 相差二或三,所以每个 $b$ 至多枚举三个 $a$ . ## 用整数精确求取整 浮点误差不应决定叶子是否已经越过阈值。使用以下严格界: $$\frac{410105312}{150869313}