训练日记-46

来源:互联网 发布:c语言漫画 编辑:程序博客网 时间:2024/05/18 01:23

           这几天主要任务还是在做组合数学相关的练习题,感觉组合数学很大部分都是关于容斥原理的,基础容斥:ans=整除1个元素个数-整除2个元素个数+整除3个元素个数-整除4个元素个数+....    

      其次用到比较多的就是Lucas定理,Lucas定理是用来求 c(n,m) mod p,p为素数的个数。其基本表达式为:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)    其次求c(n,m) mod p的基本公式相除时需要用到逆元

     再就是卡特兰大数问题,掌握了卡特兰的基本递推公式,用Java处理大数问题即可解决。

 卡特兰的公式有如下:

  h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)
  h(n)=C(2n,n)-C(2n,n-1)
  h(n)=C(2n,n)/(n+1);

  h(n)=h(n-1)*(4*n-2)/(n+1)   //递推求解主要用该公式


     ACM永不灭,继续加油!!!



原创粉丝点击