[ABC240G]Teleporting Takahashi
题目链接
题目大意
在一个立体直角坐标系中,有一个点在点\((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取模
浙公网安备 33010602011771号