《算法竞赛》06 数论和线性代数
高斯消元
- 原来之前打的都有问题,处理第 \(i\) 列的时候要把前 \(i-1\) 行的第 \(i\) 列也消成 \(0\)。
二分法与 \(0/1\) 分数规划
- 关于直线的理解:每一种选出元素的方案都对应一条直线,这条直线对应的答案为横截距。要选出一条直线使横截距最大,于是找到最大的 \(x=k\) 使存在直线在 \(x=k\) 时的取值 \(\ge0\),二分求解。
- 应用场景:最优比率......(如最优比率环、最大密度子图等)
GCD 和 LCM
- Stein 算法求 GCD:两个偶数同除以 \(2\),一奇一偶把偶数除以 \(2\),都是奇数就变成和的一半和差的一半。目测复杂度 \(O(\log V)\)。
- 裴蜀定理应用:一堆整数加减运算结果是他们 GCD 的整数倍。
线性丢番图方程
- \(a,b\in Z,ax+by=c\) 有解当且仅当 \(GCD(a,b)|c\)。
同余
- 一元线性同余方程可以转化为线性丢番图方程。
- (拓展)中国剩余定理注意使用条件(互质)。
素数(质数)
- pollard_rho 用的时候要注意随机数的范围,要用到 pollard_rho 的范围一般很大。
威尔逊定理
- \(p\) 为质数时 \((p-1)!\bmod p=p-1\)。
- \(p\) 为非质数(除了 \(4\) )时 \(p|(p-1)!\)。
积性函数
- 定义:\(\forall p,q\in Z,p\perp q,f(pq)=f(p)\times f(q)\),则 \(f\) 为积性函数。\(\forall p,q\in Z,f(pq)=f(p)\times f(q)\),则 \(f\) 为完全积性函数。
- 积性函数的和函数(迪利克雷前缀和)也是积性函数——\(f\) 为积性函数那么函数 \(F(n)=\sum_{d|n}f(d)\) 也是积性函数。
欧拉函数
- 拓展欧拉定理:\[a^b\equiv\left\{\begin{matrix} a^{b\bmod\varphi(m)},&gcd(a,m)=1\\ a^b,&gcd(a,m)\ne1,b<\varphi(m)\\ a^{b\bmod\varphi(m)+\varphi(m)},&gcd(a,m)\ne1,b\ge\varphi(m) \end{matrix}\right.(\bmod\ m) \]
整除分块
- 找 \(x\) 所在块最后一个位置:\(\lfloor\frac n{\lfloor\frac nx\rfloor}\rfloor\)。
迪利克雷卷积
- \((f*g)(n)=\sum_{d|n}f(d)g(\frac nd)\)。
- 积性函数的迪利克雷卷积仍是积性函数。
莫比乌斯函数与莫比乌斯反演
- 本质:\(\mu*1=\varepsilon\)。
杜教筛
- 求一个函数的前缀和——将其和另一个函数卷起来,且新的两个函数的前缀和可以快速求出。
- 以 \(n^{\frac23}\) 分治。