NOIP 2018 提高组复赛 知识点清单及常用方法

一 基础算法:

1、栈、单调栈、队列、单调队列

2、STL

3、离散化

4、求逆元

二、初级算法

模拟、枚举、递归、递推、贪心、分治、搜索、动态规划

三、高级算法

1、数据结构:并查集、树状数组

2、字符串:hash、trie树

3、图论:Kruskal、floyd、dijkstra、SPFA、拓扑排序、差分约束、分层图、朴素lca、在线LCA、离线LCA,tarjan、点、边双

4、数论:约数和、约数个数、质数、exgcd、CRT,同余方程组、欧拉函数、欧拉定理、费马小定理、组合数取模、十进制快速幂,积性函数线性筛、置换

5、动态规划:区间DP、树形DP、状压DP、概率DP、数位DP、背包DP、普通DP

 

常用方法:

一、数据结构

①并查集 (1):判断图的连通性

                (2):最小生成树/最大生成树

                (3):对具有相同性质的dong xi 进行分类

                (4):如果想要知道  对于一个全图 删点之后  ,查询连通性,我们可以反过来搞,将删点转为加点,再查询连通性

                (5):在“回溯”的时候进行统计,->带权并查集

                (6):注意 数组的大小,(注意 是否 有离散化 <->数组大小)

                (7):如果有两类元素,需要对应维护,可以将数组开大,前半段表示第一类元素,后半段表示第二类元素,前后进    行“连边”。->仿佛说的不是很明白

                (8):在以i为最小/大/...值的情况下,枚举j,寻找答案,注意 剪枝!

                (9):注意 序列与图的玄学联系与转换     序列<->图       序列<->Kruskal

 

②树状数组 (1):单点修改,区间查询

                   (2):区间修改,单点查询(差分)

                   (3):区间修改,区间查询

                   (4):区间开放,区间求和-->lalala

 

二、字符串

①hash (1):单模hash

             (2):双模hash

             (3):挂链hash(反正我NOIP不会用它的

             (4):注意一些hash的常规操作就好,去我的博客找吧!

             (5):map/unordered_map(C++11)

②trie树 (1):注意数组的大小

你可能感兴趣的:(NOIP 2018 提高组复赛 知识点清单及常用方法)