「题解」ARC061F Card Game for Three
orz qyc
小 A,小 B,小 C 在玩游戏。他们每个人分别有 \(n,m,k\) 张牌,每张牌上面写着 \(a,b,c\) 三个字母中的其中一个,每个回合有一个人出牌,如果出牌为 \(a\) 则小 A 下一个回合出牌,如果出牌为 \(b\) 则小 B 下一个回合出牌,小 C 同理。若轮到某位玩家出牌时,其手中无牌,则该位玩家获胜。
现在小 A 第一个出牌,对所有 \(3^{n+m+k}\) 种手牌拥有的可能性计算小 A 获胜的方案数,对 \(10^9+7\) 取模。
如果按照打出的顺序排成一个长度为 \(l\) 的序列,小 A 获胜当且仅当:\(a\) 恰好出现了 \(n\) 次且在最后一次出现,\(b\) 出现了不多于 \(m\) 次,\(c\) 出现了不多于 \(k\) 次。
而这个长度为 \(l\) 的序列对应了 \(3^{n+m+k-l}\) 种手牌拥有的情况。
\(n\) 次是一定打的,枚举 \(b,c\) 出现的次数 \(t\),然后枚举 \(b\) 出现的次数 \(i\):
第一个组合数是除了最后一个是 \(a\),确定 \((n-1)\) 个 \(a\) 的位置,\(3^{m+k-t}\) 是计算的对应了多少种手牌拥有情况,最后一个组合数为在 \(t\) 个 \(b,c\) 都可以填的空位挑出 \(i\) 个填 \(b\),注意这个组合数可能会出现 \(i<0\) 或 \(i>t\) 的情况,由于是考虑其实际的组合意义,所以当出现这样的情况时视为 \(0\).
最后一个实际上是组合数一行的区间和,众所周知这个的计算是困难的,由于这个区间和的形式比较特殊,考虑递推出这个东西:
至此,可以在 \(\mathcal{O}(n+\log \bmod)\) 的时间复杂度内解决问题。