[ARC061F] Card Game for Three
题意
有 \(3\) 个人。每个人分别有 \(n1, n2, n3\) 张牌。
每张牌上有一个名字,分别表示三个人。
对于每个回合,进行如下操作:
- 若当前回合的玩家手上没有牌了,则该玩家获胜。
- 否则从手牌中取出一张牌,丢弃她,并进入该牌上的名字的玩家的回合。
求第一名玩家获胜的牌的分配方案数。
Sol
很简单的数数题。
首先考虑对于这个问题建立一个双射。
不难想到可以考虑确定当前牌的 丢弃序列 \(S\)。
注意到因为某个玩家获胜后,对于别的玩家来说牌会有剩余。
因此可以考虑使用 \(m\) 记录当前的 \(|S|\)。
显然序列 \(S\) 包含 \(n1\) 个 \(1\),考虑枚举当且序列中,非 \(1\) 数的个数。
不难列出:
\[\sum_{k = 0} ^ {n2 + n3} 3 ^ {n2 + n3 - k} \dbinom{k + n1 - 1}{k} \sum_{i = 0} ^ k [i \le n2][k - i \le n3] \dbinom{k}{i}
\]
考虑设
\[\begin{aligned}
f(k) = \sum_{i = k - n3} ^ {n2} \dbinom{k}{i}
\end{aligned}
\]
注意到下指标求和很不好做,但是这个式子的形式十分优美,考虑递推。
\[\begin{aligned}
&= \sum_{i = k - n3} ^ {n2} \dbinom{k - 1}{i} + \dbinom{k - 1}{i - 1} \\
&= \sum_{i = k - n3} ^ {n2} \dbinom{k - 1}{i} + \sum_{i = k - n3 - 1} ^ {n2 - 1} \dbinom{k - 1}{i}
\end{aligned}
\]
注意到这两个东西和 \(f(k - 1)\) 很像,左边显然少一个 \(\dbinom{k - 1}{k - n3 - 1}\),右边少一个 \(\dbinom{k - 1}{n2}\)。
因此
\[f(k) = 2f(k - 1) - \dbinom{k - 1}{n2} - \dbinom{k - 1}{k - n3 - 1}
\]
做完了。
时间复杂度:\(O(n)\)。