LOADING

加载过慢请开启缓存 浏览器默认开启

Math

数论初步内容,主要是线性代数与组合(可能有点杂,因为我不知道放哪)。

同余

同余的性质

直接看成没有除法的加法就可以了,没关系的。

解同余方程

使用 Exgcd 可以解同余方程 。

解同余方程组

使用 Exgcd 解每一个方程,然后取所有解的 lcm 就是答案。

这就是 ExCRT。

乘法逆元

但如果我们想要做除法怎么办:使用费马小定理即可。

费马小定理:$a^{-1}=a^{p-2} \pmod p​$。要求 $p​$ 为质数。

你说 $p$ 不为质数怎么办?如果题目保证一定存在逆元,则使用 Exgcd 求解出的 $x$ 就是逆元。

如果不保证?说明出题人……,不想让你做除法。

其他

应该考不到。

组合

请选择你的阵营:

  • 组合意义天地灭,代数推导保平安
  • 代数推导天地灭,组合意义保平安

目前不会代数推导,数学太差了呜呜呜。

组合基础

有以下记号:

  • $C_{n}^{m}$ 或者 $(^n_m)$ 表示从 $n$ 个元素中选出 $m$ 个元素的方案数。个人更喜欢 $C$ 的写法。
  • $A^m_n$ 表示从 $n$ 个元素中选出 $m$ 个的排列数。

$C$ 是无序的,$A$ 是有序的,也可以认为 $C$ 选出了一个集合,$A$ 选出了一个序列。

$A^m_n=\dfrac{n!}{(n-m)!}$

$C_n^m=\dfrac{n!}{m!(n-m)!}$

虽然这个式子已经很优雅了,但不是人类能够计算的,所以我们手玩时可以用这个:

$A_n^m=n\times (n-1)\times …\times (n-m+1)​$

$C_n^m=\dfrac{n\times (n-1)\times …\times (n-m+1)}{m\times (m-1)\times ……1}$

这两个式子也同时方便了我们 $n,m​$ 不同阶时暴力计算组合/排列数。

多重集的排列数(多重组合数)

这里指包含重复元素的广义集合,比如集合 $S={n_1\times a_1,n_2\times a_2,…,n_k\times a_k}​$

所以 $S​$ 的全排列个数为:$\dfrac{n!}{n_1!n_2!…n_k!}​$

或用符号表示为:$\dbinom{n}{n_1,n_2,…,n_k}​$

亿点点公式

我坚定选择组合意义!代数推导太暴力,不够优雅。

$\dbinom{n}{m}=\dbinom{n}{n-m}$ 或 $C_n^m=C_n^{n-m}$

正确性显然,你选完 $m$ 个剩下的 $n-m$ 个也是选好的。

$\dbinom{n}{k}=\dfrac{n}{k}\dbinom{n-1}{k-1}$

可以理解为,先在 $n-1$ 中选出 $k-1$ 个,然后再选最后一个。每一个元素都可能成为最后一个,所以 $\times n$,但这样会算重,一个元素会被贡献 $k$ 次,所以 $\div k$ 。

$\dbinom{n}{m}=\dbinom{n-1}{m-1}+\dbinom{n-1}{m}$

可以理解为 $n-1$ 选 $m-1$ 个,然后第 $n$ 个必选 加上 $n-1$ 选 $m$ 个,第 $n$ 个不选的方案数。

上述用代数推导直接暴力展开就行了。

$\sum_{i=0}^{n}\dbinom{n}{i}=2^n​$

从 $n$ 个数中,不选,选 $1$ 个,选 $2$ 个……选 $n$ 个。这不就是 状压dp 的形式,直接 $2^n$ 就行。

$\sum_{i=0}^{n}(-1)^i \dbinom{n}{i}=[n=0]$

容斥原理,还是考虑是 状压dp 的形式,所有数都会被抵消。

$\sum_{i=0}^{k}\dbinom{n}{i}\dbinom{m}{k-i}=\dbinom{m+n}{k}$

范德蒙德卷积,很高级,所以我不会。将一个大集合划分成两个小集合,然后在两个小集合中分别选。

$\sum_{i=0}^{n}\dbinom{n}{i}^2=\dbinom{2n}{n}$

不会的请下载国家反诈APP

$\sum_{i=0}^{n}i\dbinom{n}{i}=n2^{n-1}$

这个咱代数推导吧,我真编不下去了。给它全展了,然后合一合就行了。(好像是,也有可能是我推错了)

$\sum_{l=0}^{n}\dbinom{l}{k}=\dbinom{n+1}{k+1}$

不会,太难了,编不下去了。

$\dbinom{n}{r}\dbinom{r}{k}=\dbinom{n}{k}\dbinom{n-k}{r-k}$

从 $n$ 中先选 $r$ 个,再从 $r$ 中选 $k$ 个的方案数,等同于先从 $n$ 中选 $k$ 个,再从剩余地方选 $r-k$ 个。

二项式反演

若:$g_i=\sum_{j=0}^{i}\dbinom{i}{j}f_j$

则:$f_i=\sum_{j=0}^{i}\dbinom{i}{j}(-1)^{i-j}g_j$

这个是原式,显然没用。

变式:

  • 若:$g_i=\sum_{j=i}^{n}\dbinom{j}{i}f_j$
  • 则:$f_i=\sum_{j=i}^{n}\dbinom{j}{i}(-1)^{j-i}g_j$

$f_i$ 表示“恰好 i 个”,$g_i$ 表示“钦定 i 个”。

不会推导,不会做题,全剧终。

线性代数

矩阵运算

矩阵运算有加法和乘法两种。

只有长得完全一样的矩阵能相加,只有矩阵 A 的宽等于矩阵 B 的高的矩阵才能相乘。

矩阵的运算具体可以看 OiWiki,Latex 已经敲傻了。

具体运用是矩阵快速幂以及线段树维护矩阵。

矩阵快速幂用来加速递推,因为转移矩阵是相同的,而矩阵乘法有结合律。

线段树维护矩阵可以方便的维护大量信息,同样因为矩阵乘法有结合律,所以属于半群信息。

高斯消元

将高斯消元看作矩阵,一直做恒等变换就是在消元。

建议直接学校 高斯-约旦 消元。

代码短且简介,符合人类思考过程。

线性基

对于一堆数的异或值,支持以下:

  • 查询某个值是否能被异或出来,是否存在。
  • 任选数异或的最大/最小值。
  • 查询任选数异或的第 k 大值。

非常强力,但是不会。