组合数

组合数

定义

  • n 个物品中选 m 个物品的方案数。
  • 记作 CnmC(n,m)(nm)
  • Cnm=n!m!(nm)!
  • Cnm=Cn1m1+Cn1m

性质

  1. Cnm=Cnnm
  2. Cnm=i=0n1Cim1
  3. m×Cnm=n×Cn1m1
  4. i=0nCni=2n

代码

莫名其妙拿了个次优解(?

利用乘法逆元快速求解 查询复杂度 O(logM)M 为模数。

仅适用于模数为质数的情况。

ll QuickPow(ll a,ll b){
ll res = 1;
while(b){
if(b&1) res = res * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return res % MOD;
}
ll fro[maxN];
inline void pre(ll n){
fro[0] = 1;
for(ll i = 1;i<=n;i++) fro[i] = fro[i-1] * i % MOD;
}
inline ll inv(ll n){
return QuickPow(n,MOD-2) % MOD;
}
inline ll C(ll n,ll m){
if(n < m) return 0;
return fro[n] * inv(fro[m])% MOD * inv(fro[n-m]) % MOD;
}

卡特兰数

  • 简单来说,卡特兰数就是一个有规律的数列,在坐标图中可以表示为:从原点 (0,0) 出发,每次向 x 轴或者 y 轴正方向移动 1 个单位,直到到达(n,n)点,且在移动过程中不越过第一象限平分线的移动方案总数。

  • Catalann=1n+1C2nn

posted @   Burnling  阅读(263)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示