NOIp 数学知识点总结

推荐阅读 NOIp 基础数论知识点总结: https://www.cnblogs.com/greyqz/p/number.html

排列组合

常用公式

排列\[\displaystyle A_n^m=\frac{n!}{(n-m)!}\]

全排列:\(A_n^n=n!\)

组合\[\displaystyle C_n^m=\frac{A_n^m}{m!}=\frac{n!}{m!(n-m)!}\]

组合数的性质:

\[ \displaystyle C_n^m = C_n^{n-m} \]

\[ \displaystyle C_n^m= C_{n-1}^m+C_{n-1}^{m-1} \]

推导:\[ \displaystyle C_n^m = \frac{n!}{m!(n-m)!}= \frac{(n-1)!}{m!(n-m-1)!}\times\frac{n}{n-m}=\frac{(n-1)!}{m!(n-m-1)!}\times(1+\frac{m}{n-m})=C_{n-1}^{m}+\frac{(n-1)!}{(m-1)!(n-m)!}= C_{n-1}^m+C_{n-1}^{m-1} \]

\[ \displaystyle \sum_{i=0}^n C_n^i =\sum_{i=0}^nC_n^i1^{i}\cdot 1^{n-i}=(1 + 1)^n= 2^n \]

二项式定理:\[\displaystyle (a+b)^n=\sum_{i=0}^n C_n^i a^i b^{n-i}\]

\[ \displaystyle \sum_{i=0}^r C_{n+i}^i = C_{n+r+1}^r \]

\[ \displaystyle \sum_{i=0}^n i\cdot C_n^i =\sum_{i=1}^{n}n\cdot C_{n-1}^{i-1}=n\sum_{i=0}^{n-1}C_{n-1}^{i-1}= n2^{n-1} \]

\[ \displaystyle C_n^m\cdot C_m^r=C_n^r\cdot C_{n-r}^{m-r} \]

\[ \displaystyle C_n^0-C_n^1+C_n^2+\cdots +C_n^m=0 \]

组合数基本处理 \(O(n)\)

const int N = 1e5 + 7, MOD = 1e9 + 7;
int add(int a, int b) { if ((a += b) >= MOD) a -= MOD; return a; }
int mul(int a, int b) { return ll(a) * b % MOD; }
int C(int a, int b) { return mul(jc[a], mul(ijc[a - b], ijc[b])); }
int qpow(int a, int b) { 
    int r = 1;
    for (; b; b >>= 1) {
        if (b & 1) r = mul(r, a);
        a = mul(a, a);
    }
    return a;
}
int jc[N], ijc[N];
void ini() {
    jc[0] = 1; for (int i = 1; i < N; i++) jc[i] = mul(jc[i - 1], i);
    ijc[N - 1] = qpow(jc[N - 1], MOD - 2);
    for (int i = N - 2; i >= 0; i--) ijc[i] = mul(ijc[i + 1], i + 1);
}

Lucas 定理

对于正整数 \(n, m~ (n\ge m)\), 素数 \(p\), 令 \(n=n_kp_k+n_{k-1}p^{k-1}+\cdots+n_1p+n_0\), \(m=m_kp_k+m_{k-1}p^{k-1}+\cdots+m_1p+m_0\), 则

\[\displaystyle \binom{m}{n}\equiv \prod_{i=0}^k \binom{m_i}{n_i}\pmod p \]

可变形为:

\[\displaystyle \binom{m}{n}\bmod p=\binom{\left\lfloor\frac{m}{p}\right\rfloor}{\left\lfloor\frac{n}{p}\right\rfloor}\cdot \binom{m\bmod p}{n\bmod p}\bmod p \]

用 Lucas 定理可快速求解 \(C_n^m\bmod p\). 代码:

const int mod=10007;

int jc[mod], ijc[mod], T, n, m;

inline int lucas(int a, int b) {
    if (a>b) return 0;
    if (b<=mod) return jc[b]*ijc[a]%mod*ijc[b-a]%mod;
    return lucas(a/mod, b/mod)*lucas(a%mod, b%mod)%mod;
}

int main() {
    jc[0]=jc[1]=ijc[0]=ijc[1]=1;
    for (int i=2; i<mod; ++i)
        jc[i]=jc[i-1]*i%mod, ijc[i]=(mod-mod/i)*ijc[mod%i]%mod;
    for (int i=2; i<mod; ++i)
        ijc[i]=ijc[i-1]*ijc[i]%mod;
    for (scanf("%d", &T); T; --T)
        scanf("%d%d", &n, &m), printf("%d\n", lucas(m, n));
    return 0;
}


数学规律

Catalan 数

\[H_n=\displaystyle\frac{C_{2n}^n}{n+1}\]

1, 1, 2, 5, 14, 42, 132, ...

以下问题属于 Catalan 数:

  1. \(2n\) 个人排成一行进入剧场. 入场费 5 元. 其中只有\(n\)个人有一张 5 元钞票, 另外 \(n\) 人只有 10 元钞票, 剧院无其它钞票, 问有多少中方法使得只要有 10 元的人买票, 售票处就有 5 元的钞票找零?
  2. 一位大城市的律师在她住所以北 \(n\) 个街区和以东 \(n\) 个街区处工作. 每天她走 \(2n\) 个街区去上班. 如果他从不穿越(但可以碰到)从家到办公室的对角线, 那么有多少条可能的道路?
  3. 在圆上选择 \(2n\) 个点, 将这些点成对连接起来使得所得到的 \(n\) 条线段不相交的方法数?
  4. 对角线不相交的情况下, 将一个凸多边形区域分成三角形区域的方法数?
  5. 一个栈 (无穷大) 的进栈序列为 \(1,2,3, \ldots ,n\) 有多少个不同的出栈序列?
  6. \(n\) 个结点可够造多少个不同的二叉树?
  7. \(n\) 个不同的数依次进栈, 求不同的出栈结果的种数?
  8. \(n\)\(+1\)\(n\)\(-1\) 构成 \(2n\)\(a_1,a_2, \ldots ,a_{2n}\), 其部分和满足 \(a_1+a_2+ \cdots +a_k\ge 0(k=1,2,3, \ldots ,2n)\), 该数列为?


ssoj1073:给定 \(0<p<q<100,p,q\in\mathbf{N}^*\), 求 \(\displaystyle\frac{H_q}{H_p}\).

解:令 \(q=p+x,x\in\mathbf{N}^*​\), 则

\[\displaystyle \frac{H_q}{H_p}=\frac{C_{2q}^q\cdot (p+1)}{C_{2p}^p\cdot (q+1)} =\frac{\displaystyle\frac{(2q)!}{(q!)^2}\cdot (p+1)}{\displaystyle\frac{(2p)!}{(p!)^2}\cdot (q+1)}=\frac{\displaystyle\frac{(2p+2x)!}{\big((p+x)!\big)^2}\cdot (p+1)}{\displaystyle\frac{(2p)!}{(p!)^2}\cdot (p+x+1)}=\frac{\displaystyle\prod_{i=2p+1}^{2q}{i}\cdot(p+1)}{\left(\displaystyle\prod_{i=p+1}^q{i}\right)^2 (q+1) } \]

带入特殊值计算.


Stirling 数

(2007 普及)将 \(n\) 个数 \(1,2,\ldots,n\) 分成 \(r\) 个部分. 每个部分至少一个数. 将不同划分方法的总数记为 \(S_n^r\). 例如, \(S_4^2=7\), 这 7 种不同的划分方法依次为 \(\{(1) , (234) \},\{(2) , (134) \},\{(3) , (124) \},\{ (4) , (123) \},\{ (12) , (34) \},\{ (13) , (24) \},\{ (14) , (23) \}\). 当 \(n=6, r=3\) 时, \(S_6^3=\)( )

\[ S_n^m = m S_{n-1}^{m} + S_{n-1}^{m-1} \]

\[ S_n^1 = 1,S_n^0 = 0,S_n^n = 1 \]

转载于:https://www.cnblogs.com/greyqz/p/maths.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值