$40$分
乱搞,$DP$
$100$分
法$1$
我们可以用$40$分的做法打一张表,然后找找规律就发现$ans=C^{A+1}{A+B-2} *S^{A+B-2}{n-1}$了。
啥?你说你不会$Stirling$数?
出门左转具体数学,包教包会
法$2$
我们理性分析一下
我们可以先挑出最高的位置,直接丢到一边去。
于是就变成变为在一个$n$层的分层图上,每次往下走一层,选择$A+1$或$B+1$或不变。
有$3$种边
第$1$,$2$种边都是$1$条,第$3$种边由$n - 2$条递减到$0$条。
设$f_{i,j}$为从后往前推到第$i$层,选了$j$条改变$A$,$B$的边,选边的方案数。
于是我们就有以下递推式
$f_{i,j}=(i-1)*f_{i-1,j}+f_{i-1,j-1}$
于是
$ans=C^{A+1}{A+B-2}*f{n-1,A+B-2}$
然后你就会发现$f$的递推式和$Stirling$数一模一样….
我们预处理一下组合数$C$和$f$就可以通过此题了
代码:
1 |
|