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) \]

然后这个题目就被我们做掉了.

posted @ 2026-10-08 17:47  txp2025  阅读(5)  评论(0)    收藏  举报