NOIp2020复赛前日志

NOIp2020复赛前日志

组合数和卢卡斯定理

首先写的顺序别搞错了

(n)个不同元素中取出(m(m≤n))个元素的所有组合的个数

[C_n^m=inom nm=C(n,m)=frac{n!}{m!(n-m)!}\ C_n^0=1\ C_n^m=C_n^{n-m}=C_{n-1}^{m-1}+C_{n-1}^{m} ]

Lucas

对于质数(p),有

[inom{n}{m}mod p=inom{n/p}{m/p}cdot inom{nmod p}{mmod p}mod p ]

(m=0)返回(1)(不然会死循环)

其中的(inom{n/p}{m/p})不需要再调用卢卡斯函数分解。

需要其他的算法:快速幂求逆元,预处理出阶乘。

注意阶乘预处理时要从(0)开始,(0!=1).

空间计算

[类型空间/8 imes 数组大小/1024/1024=空间(MB) ]

例如长度为(10^6)(int)数组

(32div8 imes10^6div1024div1024=3.814MB)

所以如果您有(512MB)的话,您可以开(10^8)(int)(381.4MB))也不会(memory)爆炸。

而用STL容器的话……最好考虑极限情况并再小二分之一吧。

比如今天我就写The Beautiful Chtholly Tree写挂了……sd

upd(19:09)过啦!

记录详情

接下来要快点打板子了!


  • [x] 线段树
  • [x] 树状数组
  • [x] 树状数组(O(n))预处理
  • [x] ST表
  • [x] LCA
  • [x] (O(1))LCA
  • [ ] (dots)

游记

NOIp2020复赛游记

原文地址:https://www.cnblogs.com/send-off-a-friend/p/14087775.html