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

树形背包nm做法

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}}\)

posted @ 2020-04-26 12:41  nao-nao  阅读(179)  评论(0编辑  收藏  举报