Hackerrank manasa-and-combinatorics(数学推导)
題意:有n個字符A,2n個字符B,問你能用這3n個字母組成多少種字符串,使得組成的字符串所有前綴與后綴的B的數(shù)目都大于等于A的數(shù)目,對答案mod 99991
分析:類似卡特蘭數(shù)
ans=總方案數(shù)-存在前綴不滿足-存在后綴不滿足+存在前綴后綴同時不滿足
考慮前綴不滿足,那么說明在某個第一個奇數(shù)位2m+1,之前有m+1個A,m個B,后面3n-2m-1個位置上有n-m-1個A和2n-m個B
如果把后面的A和B同時取反,那么就是n-m-1個B和2n-m個A,總共就是n-1個B和2n+1個A
我們考慮一個長度為3n的序列,其中有n-1個B,2n+1個A,那么一種這樣的序列必定對應(yīng)原問題的一個不合法序列
所以對于存在前綴不滿足的,ans1=C(3n,n-1)
同理,后綴是等價的,ans2=C(3n,n-1)
對于前綴和后綴同時不存在的,同時頭尾考慮兩個奇數(shù)位,將中間的數(shù)取反,答案是C(3n,n-2)
所以最后結(jié)果ans=C(3n,n)-2*C(3n,n-1)+C(3n,n-2)
順便提一下,這是卡特蘭數(shù)證明的思路
轉(zhuǎn)載于:https://www.cnblogs.com/wmrv587/p/6547937.html
總結(jié)
以上是生活随笔為你收集整理的Hackerrank manasa-and-combinatorics(数学推导)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程题--进制转换
- 下一篇: HISTFILESIZE与HISTSIZ