一、题型分析
相对容并且常见的题型需要优先了解和练习。这有助于保证获得基本分。
CCF-CSP常见的考题类型:
简单计算,例如:CCF201709-1 打酱油(100分)。
序列处理,例如:CCF201612-1 中间数(100分)。
文本处理,例如:CCF201509-3 模板生成系统(100分),CCF201604-3 路径解析(100分)。
模拟题,例如:CCF201609-3 炉石传说(100分)。
搜索问题(DFS,BFS,优先搜索),例如:CCF201512-4 送货(100分)。
图论算法(最小生成树等等),例如:CCF201609-4 交通规划(100分)。
动态规划(DP),例如:CCF201612-4 压缩编码(100分)。
数学题(函数关系等等),例如:CCF201412-2 Z字形扫描(100分)。
通过CCF-CSP考试(300分)必须掌握的题型:模拟、图论算法和文本处理。从近年的实际考题看,出题内容应该是开放的,任何类型都是有可能出现的。
详见:https://blog.csdn.net/tigerisland45/article/details/78420636
二、截止到2012年数据
下面是收集的一些,
加粗表示特别重要,必须掌握
其他表示最好掌握,可能性不是很大,但是某些可以提高程序效率
高精度
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
......
详见:https://www.cnblogs.com/CXYscxy/p/11599685.html#auto_id_0