Processing math: 100%

【转】卡特兰数四个公式(简单)

公式一
递归公式
h(0)=h(1)=1
h(n)=h(0)h(n1)+h(1)h(n2)+...+h(n1)h(0)(n>=2)
如果我们用这个公式显然我们要使用递归算法,那么数据一大就在时空上很麻烦

公式二
递推公式
h(n)=h(n1)(4n2)/(n+1)
这个公式应用递推,看上起十分和善
但对大数据呢?
我们注意到大数据的时候h(n)会很大,这时候题目一般会让你对某素数取模(当然你可以打高精度(划掉))
但你在取模过程中难保一个h(n)%mod=0
那么根据公式下面所有的数都会等于0,于是你就愉快的WA了

公式三
组合数公式1
h(n)=C(2n,n)/(n+1)(n=0,1,2,...)
卡特兰数可以与组合数联系起来,得到上面的公式
而组合数就是一个杨辉三角,可以递推得到(这个不属于这道题的讨论范围我假装你们都会(逃))
但我们发现对于大数据你要取模,而对于除法你是没办法用膜的性质的(当然你可以应用逆元(划掉)),所以造成了麻烦

公式四
组合数公式2
h(n)=c(2n,n)c(2n,n1)(n=0,1,2,...)
与组合数公式1不同这个是两个组合数的减法
减法是可以用膜的性质的,于是你可以愉快的AC了。

posted @   摸鱼酱  阅读(5856)  评论(1编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 趁着过年的时候手搓了一个低代码框架
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
点击右上角即可分享
微信分享提示