数学篇
数学
中位数
- 中位数定理:如果有一个数轴,数轴上有若干个点。要在数轴上找一点,使得它到各个点的距离之和最短。
仓库选址
双生双宿之错 - 中位数性质:显然一个奇数组内大于中位数的个数等于小于中位数的个数
- 常规解题思路:利用上述性质,将小于中位数的设置为1,大于等于中位数的设置-1,只要一个区间内的和0,那么就存在这么一个中位数
E1. Submedians (Easy Version):二分答案+利用上述性质
容斥原理
又名抽屉原理:
容斥原理的符号本质是 “修正重复计数”:
计算并集时,“奇加偶减”(集合个数为奇时加,偶时减)
计算并集的补集时,符号反转,表现为 “奇减偶加”
智乃的数字:直接的应用
C. Count Good Numbers
绝对值
求绝对值函数值时,可以考虑拆绝对值
结论
\(max(|x|,|y|)=\frac{|x+y|-|x-y|}{2}\)
位运算
A Good Problem: 奇数时显而易见,全部取l,偶数时取n-2个相同x,2个相同y,找出x&y=0即可,找不出即-1,n=2时需要特判
快速幂
适用于指数较大的情况下
快速加
矩阵快速幂
P1939 矩阵加速(数列):板子题必会
应用:
AcWing 205. 斐波那契:斐波拉契数列的矩阵快速幂
简单题+:计算斐波拉契数列和
P1306 斐波那契公约数:优质题解,补充了很多斐波拉契数列的性质及其证明
斐波拉契数列 f(n)=f(n-1)+f(n-2)
\(\begin{bmatrix} f(n) \\ f(n-1) \end{bmatrix}=\begin{bmatrix} 1 & 1\\ 1 & 0 \end{bmatrix}^{n-1} \begin{bmatrix} f(2) \\ f(1) \end{bmatrix}\)
\(s(n)=\sum_{1}^{n}f(i)=2*f(n)+f(n-1)-1\)
进制问题
「LAOI-15」异变危机:思维题,发现对于s,先取10进制转化成s进制,一定成为10,再看成t进制转化成10进制,一定是等于t,基于此思考不可能的情况
两道类似的题
E. Living Sequence:方便理解的题解
还在分糖果!
常见的数学性质
一些性质经常出现在题目中,适当利用就是解题关键
排列
n个数排列代表每个数不重不漏的出现一次,经常出现在题目中
B. Make It Permutation:同时也需要思维,\(i \in [2,n]\),翻转[1,i],然后\(i \in [1,n-1]\),翻转[i+1,n].第一步很好想,因为可以使得第一列全排列,顺着思考,翻转第一排的[2,n],第二列就也是全排列,然后发现这就是规律
异或
异或是常见考点
E. Adjacent XOR:每个只能异或一次,而\(a_i\)异或的值要么是\(a_{i+1}\)要么是\(b_{i+1}\)
小苯的xor图:对于多个数异或,形如\(a \oplus (b+c+d+....)\),可以转化对应二进制下每位的数量进行异或
性质或结论:
-
\[x \oplus y \oplus z >= x \& y \& z (x,y,z均为非负整数) \]
[小苯的序列合并] (https://ac.nowcoder.com/acm/contest/117163/F): 关键x ^ y ^ z >= x & y & z
-
\[x + y - (x \oplus y)=2*(x \& y) \]
谁敢动资本的蛋糕:由上述定理,\(s=\sum_{i=1}^{n}a_i\),而每次合并需要\(-cost(x,y)=(x \oplus y)-(x+y)\),最终值为\(sxor=\oplus_{i=1}^{n}a_i\),所以\(ans=s-sxor\)
-
\[(4k+1)\oplus(4k+2)\oplus(4k+3)\oplus(4k+4)=0 \]
MEX
\(MEX a_i\)意味着不超过数组a中最小的数的最大自然数,例如:\(MEX\{2,3,4\}=1\)
一般套路,先考虑\(MEX{a_i}=x\),是否存在x
-
你怎么知道我玩原神还是玩刻晴的?: 考虑是否存在连续的子数组存在1,而此时由于有1,所以gcd也为1,所以只有区间内没有1且gcd为1时才对答案有贡献
数论
整除及取余
整除
例题:Subset Multiplication:
$ x $ 一定是 $ b_i / \gcd(b_i, b_{i+1}) $ 的倍数
已知 $ b_i = a_i \cdot x $(被乘 $ x $),需满足原数组的整除性 $ a_i \mid a_{i+1} $。
$ a_{i+1} $ 对应 $ b_{i+1} $
$ b_{i+1} = a_{i+1} $(未被乘 $ x $):
则 $ a_i \mid a_{i+1} \to \frac{b_i}{x} \mid b_{i+1} $,变形为 $ b_i \mid b_{i+1} \cdot x $。
设 $ d = \gcd(b_i, b_{i+1}), b_i = d \cdot m, b_{i+1} = d \cdot n , \gcd(m, n) = 1 $
代入得 $ d \cdot m \mid d \cdot n \cdot x $,约去 $ d $ 后得 $ m \mid n \cdot x $。
由于 $ \gcd(m, n) = 1 $, m 必须整除 x (否则 $ m $ 和 $ n $ 的公共因子会破坏 $ \gcd(m, n) = 1 $ )
而 $ m = \frac{b_i}{d} = \frac{b_i}{\gcd(b_i, b_{i+1})} $,故 $ x $ 必须是 $ \frac{b_i}{\gcd(b_i, b_{i+1})} $ 的倍数。
而对于整个序列,x是所有$ \frac{b_i}{\gcd(b_i, b_{i+1})} $的最小公倍数
D. Price Tags:注意分析时间复杂度,以及运用向上取整的公式
- 小tips
$\lceil \frac{x}{n} \rceil=\frac{x+n-1}{n} $
$\lfloor \frac{x}{n} \rfloor=\frac{x- x \mod n}{n} $
取余及同余
倍数关系:
3的倍数满足,所有数相加和为取余为0,9的倍数同理
11的倍数:利用余数之间的关系
小红的好数对
数位关系:
数位之和f(n)=(n-1)%9+1
向下取整,取余:利用取余的性质,将向下取整取余
幂中幂plus:由于mod较小,可以找出循环节
赛瓦维斯特定理:已知a,b为大于1的正整数,gcd(a,b)=1,(a,b的最大公约数=1)则使不定方程ax+by=C不存在非负整数解的最大整数(C是最大的 使不定方程 没有 非负整数解 的数。)C=a×b−a−b
得不到的爱情
B. Add 0 or K:令\(a_i+k*c_i\)能被g(g>1)整除,\(g=k+1,c_i=a_i mod (k+1)\)成立
B - Another Divisibility Problem:数论推导
约数
可以由若干个素数相乘得到
-
约数之和:一个数的约数是不同次数的素因子的相乘,由此可以推出解题公式
-
约数个数:一个的约数个数是素因子的次数相乘得到,不同的素因数次数,决定一个不同的因数
同时满足条件的一定是完全平方数,因为题目要求 "因数个数是质数且≠2"。设因数个数为质数p(p≠2),则根据因数个数公式:\((p_1+1)(p_2+1)...(p_n+1)\),p只能是单个因子的乘积(即p = e+1,其中e是某个质因子的指数)。由于p是奇质数(≠2),则e = p-1是偶数,因此原数一定是平方数(e为偶数时,\(p^e = (p^(e/2))²\)
素数
- 素数一定是奇数:B 上海保卫战
- 质因数分解:任意一个整数都可以唯一地分解成多个质因数的乘积
C. Count Good Numbers:分解成小于位数小于的质因数不好,所以只需要找到任取2,3,5,7,组成的最小公倍数 - 欧拉筛
变式:- [蓝桥杯 2022 国 A] 选素数/Primal Sport:在筛素数的同时,记录每个数的最大质因数
- 质数距离:考虑对于任意一个合数 x,他必定存在一个最小的质因子 d
,且这个最小的质因子 $ d<=sqrt(n) $,以此来筛选区间内所有合数
gcd 与 lcm
前置芝士
\(gcd(a,b)=\gcd(b,a \% b)\)
\(lcm(a,b)=\frac{a \times b}{\gcd(a,b)}\)
LCM补充知识:
- LCM(x, y) 的过程实际上是对 x, y 的每个质因子个数取max的过程。
- 如果 LCM(x, y)!= x,那么如果仅对 y 进行 LCM 操作是无法变成 x 的。
-
简单应用
[蓝桥杯 2023 国 A] 切割:切割成变成正方形,且使得正方形最多,就是找最小公约数,而最小公约数小于最大公约数,枚举因数寻找
小红与gcd和sum:根据gcd的性质,枚举gcd值,从而求出子序列最大值 -
手推结论
GCD plus LCM,利用上述两个结论就可以很快推出,推不出来看题解
-
与素数唯一分解定理结合
[蓝桥杯 2024 国 A] gcd 与 lcm:简单的利用上述性质推导之后,需要构造的数组的每个元素由质因数组成.(题解) -
利用互质关系转化
\(gcd(a,b*c)=gcd(a,b)\) if $ gcd(a,c)=1 $ -
求周期
A.小红的数组查询(二)
逆元
零碎知识点:
- \(inv(inv(i))=i\)
组合数
前置知识:
- 求阶乘:用递推f[n]=f[n-1]*i
- 求逆元:因为求组合数时,存在分母取模,而分母是阶乘,所以需要求阶乘逆元.
求组合数
- 公式:\(C_{n}^{m}=\frac{n!}{(n-m)!m!}\)
- 杨辉三角恒等式:\(\dbinom{a}{b} + \dbinom{a}{b-1} = \dbinom{a+1}{b}\)
- 卢卡斯定理:主要用求大组合数取模
- 简单例题:
-伊菲的比赛:简单的推公式,高中问题
多重组合数
多重组合数(也称为多重排列数)是组合数学中用于计算有重复元素的排列方式数的概念。
假设有 $ k $ 种“类型”的元素,第 $ i $ 种类型有 $ n_i $ 个完全相同的元素。将所有元素(总共有 $ n = n_1 + n_2 + \dots + n_k $ 个)排成一列,这样的排列方式总数就是多重组合数。
计算公式
多重组合数的公式为:
其中:
- $ n = n_1 + n_2 + \dots + n_k $(总元素数);
- $ n_i! $ 是第 $ i $ 种类型元素的“内部重复数”(因为相同元素的排列会被视为重复,需要除去)。
k部分拆分数
[构造序列](https://ac.nowcoder.com/acm/contest/117762/E):简单例题
期望
J - Points on the Number Axis A:期望位置 = 所有初始点的平均值,题解
博弈论
取石子游戏
规则
有 1 堆石子,共 n 个;
两人交替取,每次至少取 1 个,最多取 m 个;
最后取完石子的人获胜
必败态:当 n % (m+1) == 0 时,当前玩家必败(无论取 k 个,对手都能取 m+1 -k 个,最终对手取完)。
必胜态:当 n % (m+1) != 0 时,当前玩家必胜(先取 n % (m+1) 个石子,让剩余石子数为 m+1 的倍数,迫使对手进入必败态)
-
例题I Wanna Win the Cards:每次取至少一个,之多k个不为种植不为1的数
-
递推:
照天地苍茫,却有花影成双:1,2,3的情况确定,于是可以一个一个推出大于3的情况,那么对于第i个,如果减去所有的小于的i的平方数都无法胜利,那么就失败 -
搜索
Games may be harmful:暴力搜索的时间复杂度是足够的,根据博弈关系搜索 -
思考
D. Game on Array: 可以考虑对单独一个数
计算几何
三角形
小红的整数三角形:三角形面积公式∣(x2−x1)(y3−y1)−(x3−x1)(y2−y1)|/2
凹包
凸多边形:所有顶点的 “转向” 方向完全一致(要么全逆时针,要么全顺时针)。
凹多边形:至少存在一个顶点的 “转向” 方向与其他顶点相反(即存在凹角)
逆时针遍历三个点l,i,r,向量分别为b(l->i),c(i->r),利用叉积判断转向,若值全部为正或者负,为凸多边形,存在不同的即为凹多边形
对应习题:
凹包