[NOIP]自己收集总结的NOIP考纲
首先来一张图,很直观
下面是收集的一些,我改了一下
红色加粗表示特别重要,必须掌握
绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率
高精度
a.加法
b.减法
c.乘法(应该只会有高精乘单精)
d.高精度除单精 (后面c,d考的可能性较小,应该只考a,b)
排序算法
a.选择排序
b.插入排序
c.hash排序
d.归并排序(单纯的排序可能用不到,有快排就行了,但是归并排序的思想很重要)
e.堆排序
f.快排
字符串匹配算法
a.蛮力法
b.KMP
数论
a.欧几里德算法(用辗转相除法求最大公约数)
b.扩展欧几里德算法 ax+by=c 的正整数
c.素数 O(sqrt(n))
d.筛法求素数
e.快速乘方(位运算+同余+高精)
树论
a.二叉搜索树
b.优先队列(C++中priority_queue,相当于手动维护的小(大)根堆的数据结构优化)
c.线段树 (RMQ问题建议使用st算法)
d.平衡树一种(建议学习SBT)
图论
a.拓扑排序
b.割顶,割边(桥) {O(n)}
c.强连通分支 O(n)
d.有向无回路图的最长路径
e.欧拉回路
f.最小生成树
① Prime O(N2)
② Kruskal O(M2)
g.次小生成树 {简单的删除最大边是不对的}
h.最短路径
① Dijkstra
② Bellman-ford
③ spfa
④ flyod
单源点最短路径算法推荐使用spfa(即使你习惯dijkstra),Dijkstra不能有负边不能有回路,所以用spfa更保险
计算几何
a.判断两条线段是否相交
b.凸包算法 O(n)
其他算法
a.并查集
b.RMQ
......