NOIP十三连测第十二 T2 狼群 题解
问题简述
我们现在再\(n\)个点\((x_i,y_i)\)上有一头狼. 接下来会进行\(m\)轮移动.在每一次移动中,每头狼都会向上下左右移动一个单位. 问有多少个移动的方案,使得最终所有的狼都在一个位置上.
\(|x_i|,|y_i| \leq 10^5\)
\(1 \leq n \leq 50\)
\(1 \leq m \leq 10^5\)
思考
我们考虑对坐标进行变换.
对于\((x,y)\),变换为\((x+y,x-y)\)
对于移动,就变换为\((1,1),(1,-1),(-1,1),(-1,-1)\)
我们考虑如何计算点\((x,y)\)到\((a,b)\)的距离
显然,必须满足\(|x-a| \equiv 0 \pmod 2,|y-b| \equiv 0 \pmod 2\) 否则不可行
然后我们把两个维度拆开看
我们先考虑\(x\),设要向\(a\)的位置移动\(k\)布,剩下\(m-k\)步.
\[x+k-(m-k)=a
\]
\[x+2k-m=a
\]
\[2k=a+m-x
\]
\[k=\frac{a+m-x}{2}
\]
那么方案数就是\(C_m^k\)
同理,\(y\)也是这么算的.
我们可以封装函数\(f(a,b)\)表示在一维情况下,从\(a \to b\)的方案数.
那么对于\((x,y)\)到\((a,b)\)的方案数为$$f(x,a)f(y,b)$$
那么对于确定的\(a,b\),总的方案数为$$\prod_{i=1}^nf(x_i,a)f(y_i,b)$$
然后我们还需要枚举\(a,b\),所有有总的方案数为
\[\sum_{a}\sum_b\prod_{i=1}^nf(x_i,a)f(y_i,b)
\]
我们考虑拆一下
\[\sum_{a}\sum_b\prod_{i=1}^nf(x_i,a)\prod_{i=1}^nf(y_i,b)
\]
我们设\(F(a)=\prod_{i=1}^nf(x_i,a),G(b)=\prod_{i=1}^nf(y_i,b)\)
那么我们有
\[\sum_{a}\sum_bF(a)G(b)
\]
\[\sum_{a}F(a)\sum_bG(b)
\]
然后这个题目就被我们做掉了.

浙公网安备 33010602011771号