oi集训总结
oi集训总结
- 内容目录
- 掌握情况
2.29
数论, (gcd与exgcd,裴蜀定理)
exgcd:
\[x = y',y = x'-| \frac{a}{b}|*y'
\]
void exgcd(int a ,int b,int &x,int &y)
{
if(!b) {
x = 1,y = 0;return;
}
exgcd(b,a%b,y,x);
y -= (a/b)*x;
}
需要用到可以现推出来qwq
3.1
素数筛法(埃氏筛)
埃氏筛很简单诶
附一个欧拉筛的代码吧
for(int i = 2;i <= n;i ++){
if(!vis[i]){
num[++cnt] = i;
}
for(ll j = 1;(j <= cnt)&&(i*(ll)num[j] <= n);j ++){
vis[i*(ll)num[j]] = 1;
if(i%num[j] == 0) break;
}
}
3.2
ex中国剩余定理 (真啥都可以拓展耶)
\(\begin{cases}x\equiv b_1\pmod{a_1}\\x\equiv b_2\pmod{a_2}\\x\equiv b_3\pmod{a_3}\\ \cdots \\ x\equiv b_n\pmod{a_n}\end{cases}\)
掌握情况:并不是很好qwq
逆元。
可通过拓欧来求得逆元。
费马小定理求逆元
线性求逆元:
inv[1] = 1;
for(int i = 2;i <= n;i ++)
inv[i] = (p-p/i)*inv[p%i]%p;
3.3
杂题选讲(卡特兰数+期望dp)
3.4
杂题选讲
3.6
简单DP+记搜(很基础啦)
3.7
状压DP + 背包DP
3.8
树形DP
3.9
3.10
DP题目练习
3.11
DP题目练习
3.12
单调队列单调栈优化DP
3.13
矩阵乘法(快速幂)优化数列
3.14
字符串
-
KMP算法
-
Trie树
-
哈希
3.15
字符串题目讲解
3.16
数据结构:ST表,差分
3.17
扫描线与数据结构题目讲解
3.18
“超级钢琴”(很神奇的题)
3.21
题目讲解
3.22
题目讲解
3.23
题目讲解
3.24
题目讲解
3.25
图论(终于开了图论)
- 最短路
- 并查集
- 最小生成树
- 差分约束
- 数的直径+树的重心
- 倍增LCA
- dfs序,欧拉序
3.26
tarjan+圆方树(又是没搞明白的东西了)
4.6
神奇的交互题(并不懂)
4.7
题目讲解
4.13
神奇的构造题(qwq)
4.17
题目讲解
4.18
题目讲解
4.24
题目讲解+算法清单
好像我数论还是不太会呀 \(qwq^{qwq^{qwq}_{qwq}}_{qwq_{qwq}}\)