Yet Another Two Pieces Problem
Problem
你在原点 \((0, 0)\),你可以进行以下三种操作:
- 花费 \(1\) 的代价,向上移动一单位长度。
- 花费 \(k\) 的代价,向右移动 \(k\) 单位长度,需要保证不经过 \(y = x\)。其中 \(k\) 属于给定的整数集合 \(S\)。
- 花费 \(1\) 的代价,使得横坐标与纵坐标相等。
求花费 \(s\) 的代价移动到 \((n, m)\) 的方案数(\(n \le m\))。
Solution
称经过 \(y = x\) 的点为关键点,我们总是把路径拆成从一个关键点出发直到碰到终点或碰到下一个关键点的若干条路径,更细致地说,记 \(G\) 表示从 \((0, 0)\) 到 \((n, m)\) 且不经过 \(y = x\) 的路径,\(o\) 表示一次操作 \(3\),则路径一定形如 \(GoGoGo\dots GoG\)。
先考虑计算形如 \(G\) 的路径,它也可以进行拆分。记 \(P\) 表示形如 \((0, 0) \to (n, n)\) 的一条路径,其可以经过 \(y = x\),不能使用操作 \(3\);记 \(*\) 表示一次操作 \(1\)。则 \(G\) 一定形如:\(*P*P \dots *P\)。
设 \(P(x)\) 满足其 \([x^{n}]\) 表示 \((0, 0) \to (n, n)\) 的方案数,枚举最后一步选取 \(k \in S\)(显然最后一步只能是操作 \(2\)):
\[\begin{aligned}
P(x) = 1 + \sum\limits_{k \in S}x^{k}P^{k + 1}(x) \\
\end{aligned}
\]
设 \(G(u, v)\) 满足其 \([u^{n}v^{m}]\) 表示 \((0, 0) \to (n, m)\) 且不经过 \(y = x\) 的方案数。
考察一次 \((0, 0) \to (0, 1) \to (n, n + 1)\) 的 \(*P\):\(\sum\limits_{n}p_{n}u^{n}v^{n} \times v = vP(uv)\)。组合起来即为:
\[\begin{aligned}
G(u, v) = \frac{1}{1 - vP(uv)} \\
\end{aligned}
\]
设 \(F(u, v, w)\) 满足其 \([u^{n}v^{m}w^{s}]\) 表示花费 \(s\) 代价从 \((0, 0)\) 到 \((n, m)\) 的方案数,其实就是答案。
考察一次 \((0, 0) \to (a, b)\) 的 \(G\):\(\sum\limits_{a, b}g_{a, b}u^{a}v^{b}w^{a + b} = G(uw, vw)\)。
考察一次 \((0, 0) \to (a, b) \to (b, b)\) 的 \(Go\):\(\sum\limits_{a, b}g_{a, b}u^{b}v^{b}w^{a + b + 1} = wG(w, uvw)\)。组合起来即为:
\[\begin{aligned}
F(u, v, w) = \frac{G(uw, vw)}{1 - wG(w, uvw)} \\
\end{aligned}
\]
令 \(uv = x\),\(v = y\):
\[\begin{aligned}
\ [u^{n}v^{m}w^{s}]F(u, v, w) &= [x^{n}y^{m - n}w^{s}]F(\frac{x}{y}, y) \\
&= [x^{n}y^{m - n}w^{s}]\frac{G(\frac{xw}{y}, yw)}{1 - wG(w, xw)} \\
&= [x^{n}y^{m - n}w^{s}]\frac{1}{1 - wG(w, xw)}\frac{1}{1 - ywP(xw^{2})} \\
&= [x^{n}w^{s}]\left( wP(xw^{2}) \right)^{m - n}\frac{1}{1 - \frac{w}{1 - xwP(xw^{2})}} \\
&= [x^{n}w^{s}]\left( wP(xw^{2}) \right)^{m - n}\frac{1 - xwP(xw^{2})}{1 - w - xwP(xw^{2})} \\
&= [x^{n}w^{s}]\left( wP(xw^{2}) \right)^{m - n}\frac{1 - xwP(xw^{2})}{1 - w - xwP(xw^{2})} \\
&= [x^{n}w^{s}]\left( wP(xw^{2}) \right)^{m - n}\frac{1 - xwP(xw^{2})}{(1 - w)\left(1 - \frac{xwP(xw^{2})}{1 - w}\right)} \\
&= [x^{n}w^{s}]\left( wP(xw^{2}) \right)^{m - n}\frac{1 - xwP(xw^{2})}{1 - w}\sum\limits_{j \ge 0}\left( \frac{xwP(xw^{2})}{1 - w} \right)^{j} \\
&= [x^{n}w^{s}]\sum\limits_{j \ge 0}x^{j}\left( wP(xw^{2}) \right)^{m - n + j} \left( \frac{1}{(1 - w)^{j + 1}} - [j > 0]\frac{1}{(1 - w)^{j}} \right) \\
\end{aligned}
\]
到这里卡了。从数学直觉上看,接下来想干的事情是把 \(x, w\) 分离,但仅用 \(P\) 表示似乎无法做到这一点。
设 \(Q(x) = xP(x) \iff P(x) = \frac{Q(x)}{x}\),代入上式继续推:
\[\begin{aligned}
LHS &= [x^{n}w^{s}]\sum\limits_{j \ge 0}x^{j}\left( \frac{Q(xw^{2})}{xw} \right)^{m - n + j} \left( \frac{1}{(1 - w)^{j + 1}} - [j > 0]\frac{1}{(1 - w)^{j}} \right) \\
&= [x^{n}w^{s}]\sum\limits_{j \ge 0}x^{n - m}w^{n - m - j}\left( Q(xw^{2}) \right)^{m - n + j} \left( \frac{1}{(1 - w)^{j + 1}} - [j > 0]\frac{1}{(1 - w)^{j}} \right) \\
&= \sum\limits_{j \ge 0}[x^{m}w^{s - n + m + j}]\left( Q(xw^{2}) \right)^{m - n + j}\left( \frac{1}{(1 - w)^{j + 1}} - [j > 0]\frac{1}{(1 - w)^{j}} \right) \\
&= \sum\limits_{j \ge 0}\left([x^{m}]Q(x)^{m - n + j}\right) \left([w^{s - n + m + j}]w^{2m}\frac{w + [j = 0](1 - w)}{(1 - w)^{j + 1}} \right) \\
&= \sum\limits_{j \ge 0}\left([x^{m}]Q(x)^{m - n + j}\right) \left([w^{s - n - m + j}]\frac{w + [j = 0](1 - w)}{(1 - w)^{j + 1}} \right) \\
&= [n + m = s][x^{m}]Q(x)^{m - n} + \sum\limits_{j \ge 0}\left([x^{m}]Q(x)^{m - n + j}\right)\left( [w^{s - n - m + j - 1}]\frac{1}{(1 - w)^{j + 1}} \right) \\
&= [n + m = s][x^{m}]Q(x)^{m - n} + \sum\limits_{j \ge 0}\left([x^{m}]Q(x)^{m - n + j}\right)\binom{s - n - m + 2j - 1}{j} \\
\end{aligned}
\]
目的很明确了:求出所有 \([x^{m}]Q(x)^{k}\),而这是拉格朗日反演能解决的形式。
根据 \(P(x) = 1 + \sum\limits_{k \in S}x^{k}P(x)^{k + 1}\),有 \(Q(x) = x + \sum\limits_{k \in S}Q(x)^{k + 1}\),太优美了!我们可以轻松得到 \(Q(x)\) 的复合逆为:
\[\begin{aligned}
Q^{<-1>}(x) = x - \sum\limits_{k \in S}x^{k + 1} \\
\end{aligned}
\]
使用拉格朗日反演:
\[\begin{aligned}
\ [x^{m}]Q(x)^{k} &= \frac{k}{m}[x^{-k}]\left(Q^{<-1>}(x)\right)^{-m} \\
&= \frac{k}{m}[x^{-k}]\left( x - \sum\limits_{k \in S}x^{k + 1} \right)^{-m} \\
&= \frac{k}{m}[x^{m - k}]\left( 1 - \sum\limits_{k \in S}x^{k} \right)^{-m} \\
\end{aligned}
\]
设:
\[\begin{aligned}
f(x) = \left( 1 - \sum\limits_{k \in S}x^{k} \right)^{-m} \\
\end{aligned}
\]
求导:
\[\begin{aligned}
\left( 1 - \sum\limits_{k \in S}x^{k} \right)^{m}f(x) &= 1 \\
f^{'}(x)\left( 1 - \sum\limits_{k \in S}x^{k} \right)^{m} + f(x)\times m\left( 1 - \sum\limits_{k \in S}x^{k} \right)^{m - 1}\left( -\sum\limits_{k \in S}kx^{k - 1} \right) &= 0 \\
f^{'}(x)\left( 1 - \sum\limits_{k \in S}x^{k} \right) &= mf(x)\sum\limits_{k \in S}kx^{k - 1} \\
if_{i} - \sum\limits_{k \in S}(i - k)f_{i - k} &= m\sum\limits_{k \in S}kf_{(i - 1) - (k - 1)} \\
f_{i} &= \frac{1}{i}\sum\limits_{k \in S}\left( i + (m - 1)k \right)f_{i - k} \\
\end{aligned}
\]
由于 \(x | Q(x)\),\(Q(x)^{k}\) 系数非零的最低项为 \(k\),因此 \(m - n + j \le m \iff j \le n\)。
总时间复杂度为 \(O(n|S| + s)\)。