题目大意
(;;)在一个坐标系上, 以((0, 0))为起点, 每走一步,可以从((x,y))走到((x+1,y),(x-1,y),(x,y+1),(x,y-1))中的一个点上, 问走(k)步到达((a, b))的方案数。
题解
我们发现题目中的移动方式很难处理。
考虑到题目中的"走一步", 可以理解为:在曼哈顿距离的意义下, 移动一个单位长度的距离。
那么改成切比雪夫距离下移动一个单位长度的距离, 就变成了:每一步可以从((x, y))走到((x+1, y-1), (x-1, y+1), (x-1, y-1), (x+1, y+1))
考虑这样一个问题: 在数轴上, 从原点出发, 每次可以向前或向后移动一步, 走(k)步走到(n)的方案数, 显然答案是({k choose (k-n) / 2})
于是我们可以对横、纵坐标分别这样算一遍, 然后相乘。
于是我们只用使切比雪夫距离与曼哈顿距离等价就行了, 于是我们可以将原坐标系上的每个点((x, y)), 变成((x + y, x - y)), 这样新坐标系的任意点之间切比雪夫距离与原坐标系的曼哈顿距离就相等了
于是最终答案就是:({k choose (k-a-b) ;/; 2} imes {k choose (k-a+b) ;/; 2})