题意: 数组a[n],起初每个位置都为1,可以进行k次操作,把某个位置的1移到另一个位置,k次操作后得到一个最终数组,求最终数组的可能情况数。(可以与原数组重复)对1e9+7取模。
3
≤
n
≤
2
e
5
3 \leq n \leq 2e5
3≤n≤2e5
2
≤
k
≤
1
e
9
2\leq k\leq 1e9
2≤k≤1e9
分析: 原问题等价于n个球装进n个不同的箱子里,至多有k个箱子为空,问方案数。 下面给出简单的证明: 对于任意的
2
≤
k
2 \leq k
2≤k,均能移动某个数字两次达成k-1个数为0,互换两个数的位置达成k-2个数为0,因此对于小于k的任何个数为0都有可能。与投球问题等价。 新问题中,若
n
<
k
n<k
n<k所有方案数都能取到,反之则要减去
k
+
1
→
n
−
1
k+1 \rightarrow n-1
k+1→n−1个空箱对应的方案数。 总方案数为
(
n
n
+
n
−
1
)
{ n\choose n+n-1}
(n+n−1n),
n
−
i
n-i
n−i个空箱对应的方案数
(
i
n
)
×
(
n
−
i
−
1
n
−
1
)
{i\choose n} \times {n-i-1\choose n-1}
(ni)×(n−1n−i−1),也等于
i
i
i个空箱对应的方案数。(从n个箱子中选
i
i
i个不作为空箱,n个球装进n-i个箱子里,整理一下也可以写成这样
(
i
n
)
×
(
i
−
1
n
−
1
)
{i\choose n} \times {i-1\choose n-1}
(ni)×(n−1i−1))