[ABC240G]Teleporting Takahashi

题目链接

atcoder

洛谷

题目大意

在一个立体直角坐标系中,有一个点在点\((0,0,0)\)处

它可以在该立体直角坐标系中移动,移动规则如下:

如果当前它在点\((a,b,c)\)处,则它可以通过一次移动到达点\((a+1,b,c)\)处或点\((a-1,b,c)\)处或点\((a,b+1,c)\)处或点\((a,b-1,c)\)处或点\((a,b,c+1)\)处或点\((a,b,c-1)\)处

现在要让它通过恰好\(n\)次移动到达点\((x,y,z)\)处,问你总方案数,对998244353取模

解决方法

只考虑\(0\leq x,y,z\)的情况,因为到\((x,y,z)\)的方案数等于到\((|x|,|y|,|z|)\)的方案数

先考虑无解情况

容易发现,当\(x+y+z>n\)或\(n-x-y-z\)是奇数时无解

记\(m=\frac{n-x-y-z}{2}\)

考虑我们三个方向的增量分别需要\(x,y,z\),剩下的步数显然是通过走一步该方向又走回来这样子消耗。

枚举在\(x\)上多走了\(i\)步,那么就需要再用\(i\)步回来,再枚举在\(y\)上多走了\(j\)步,那么就需要再用\(j\)步回来,所以总方案数为:

\[\sum_{i=0}^m\left(\sum_{j=0}^{m-i}\left(C_{n}^{x+i}\times C_{n-x-i}^{i}\times C_{n-x-2\times i}^{y+j}\times C_{n-x-2\times i-y-j}^{j}\times C_{n-x-2*i-y-2*j}^{z+m-i-j}\times C_{n-x-i-y-j-z-m}^{m-i-j}\right)\right) \]

发现它是个多重集组合数,因此可以变成

\[\sum_{i=0}^m\left(\sum_{j=0}^{m-i}\left(\frac{n!}{\left(x+i\right)!\left(i\right)!\left(y+j\right)!\left(j\right)!\left(z+m-i-j\right)!\left(m-i-j\right)!}\right)\right) \]

此时时间复杂度为\(O(n^2)\),需要优化

将与\(j\)无关的提出来:

\[\sum_{i=0}^m\left(\frac{n!}{\left(x+i\right)!\left(i\right)!}\sum_{j=0}^{m-i}\left(\frac{1}{\left(y+j\right)!\left(j\right)!\left(z+m-i-j\right)!\left(m-i-j\right)!}\right)\right) \]

即:

\[\sum_{i=0}^m\left(\frac{n!}{\left(x+i\right)!\left(i\right)!}\sum_{j=0}^{m-i}\left(\frac{1}{\left(y+j\right)!\left(m-i-j\right)!\left(z+m-i-j\right)!\left(j\right)!}\right)\right) \]

我们希望后面的含\(j\)的式子更优美

注意到\(\left(y+j\right)+\left(m-i-j\right)=y+m-i\),\(\left(z+m-i-j\right)+\left(j\right)=z+m-i\)

可以配对组合系数,即:

\[\sum_{i=0}^m\left(\frac{n!}{\left(x+i\right)!\left(i\right)!\left(y+m-i\right)!\left(z+m-i\right)!}\sum_{j=0}^{m-i}\left(\frac{\left(y+m-i\right)!}{\left(y+j\right)!\left(m-i-j\right)!}\frac{\left(z+m-i\right)!}{\left(z+m-i-j\right)!\left(j\right)!}\right)\right) \]

改为组合数形式,即:

\[\sum_{i=0}^m\left(\frac{n!}{\left(x+i\right)!\left(i\right)!\left(y+m-i\right)!\left(z+m-i\right)!}\sum_{j=0}^{m-i}\left(C_{y+m-i}^{y+j}\times C_{z+m-i}^{z+m-i-j}\right)\right) \]

我们知道范德蒙德卷积(范德蒙德恒等式):

\[\sum_{i=0}^{n}\left(C_{n}^{i}\times C_{m}^{k-i}\right)=C_{n+m}^{k} \]

所以可以将上边的式子改为:

\[\sum_{i=0}^m\left(\frac{n!}{\left(x+i\right)!\left(i\right)!\left(y+m-i\right)!\left(z+m-i\right)!}\times C_{y+z+2\times m-2\times i}^{y+z+m-i}\right) \]

此时时间复杂度为\(O(n)\)

注意对998244353取模

posted on 2026-10-19 06:55  Qinluyan  阅读(6)  评论(0)    收藏  举报