I dug out the syllabus, checked several csdn blogs, and then sorted out the following test sites based on the blue bridge topics I had done before.
It's not guaranteed to be complete, but I hope it will help with the overall review.
The syllabus and reference links are at the end.
Added: thanks to cygg zggg xygg for the addition
Test site:
1、基本输入输出语法:
(1)如cin速度比scanf慢 两者遇到空格回车会停止读入
(2)若想读整行需要cin.getline()或gets函数
(3)读到文件尾用scanf()!=EOF等等
(4)占位符‘%’相关格式,如对齐方式,补0等。
2、C/C++库函数以及stl模板
(1)algorithm: sort next_permutation lower_bound/upper_bound
(2)queue(priority_queue) stack vector set map基本操作等
3、数据结构
(1)结构体:注意结构体用sort排序,可自定义cmp函数,也可在结构体内重载“<”运算符。
(2)字符串:string类的使用、字典树(用于求解前缀和后缀问题)。
(3)栈、队列:前缀、后缀表达式计算等。
(4)图:两种表示方法,邻接表和邻接矩阵,当n较大时只能采用邻接表。
(5)树:树是一种特殊的图。如按层输出节点等
(6)线段树:基本的单点修改、区间修改、区间查询等。
4、算法
(1)暴力:蓝桥杯又称暴力杯,n<=1e3(1000),O(n^2)的代码大概率能解,如果1e4<=n<=1e6,则要考虑O(n*logn)的算法,不过蓝桥按测试点得分,实在不会,可用O(n^2)骗分,骗到了就是赚到了。
(2)思维:不涉及算法,不涉及复杂数据结构,往往几行代码就可以解决,考验思维能力,多训练此类题目即可。
(3)模拟:模拟指根据题目描述,按部就班的写代码就可以AC,通常思路容易看出但是代码量较大,考验细节与心态。
①大数加减法
②进制转换
(4)数学问题:
①质数相关:埃式筛、欧拉筛、唯一分解定理等。
②求最大公因数:要自己会写gcd函数(欧几里得算法)
③快速幂模板,矩阵快速幂模板
④慢速乘模板(防止相乘的时候数太大爆掉long long)
(5)贪心
(6)动态规划:
①最长公共子序列
②最长上升/不下降子序列
③背包问题(01背包、多重背包、完全背包等)
④前缀和问题(一维/二维前缀和)
(7)搜索:搜索基本是必考的点,包括DFS/BFS,可分别用栈和队列模拟。记忆化搜索也是常考的点,用于避免重复搜索。
(8)图论:
①最短路:最基本要掌握两种求法,floyd算法和dijkstra算法。前者O(n^3),适用于n不大于500的情况。后者dijkstra用的较多,数据结构实现有两种,邻接矩阵与邻接表,建议用邻接表(具体实现啊哈算法上有)。
②最小生成树:kruscal算法和prim算法
③拓扑排序
(9)字符串:回文、kmp算法(字符串匹配算法)
(10)其他:并查集、二分/三分算法等
Official syllabus:
The scope of the examination includes: the winning bids in the following scopes are limited to C/C++ University Graduate Group, C/C++ University A Group, Java University Graduate Group, and Java University Group A.
C/C++ Programming Fundamentals: Includes the ability to write programs in C/C++. This part does not test the player's understanding of a certain grammar, and players can use their favorite sentences to write programs. Competitors can use standard C library functions in C language programs and standard C++ library functions (including C library, STL, etc.) in C++ language programs.
Java Programming Fundamentals: Contains the ability to write programs in Java. This part does not test the player's understanding of a certain grammar, and players can use their favorite sentences to write programs. Competitors can use the classes that come with the JDK in their programs, but cannot use other third-party classes.
Computer Algorithms: Enumeration, Sorting, Search, Counting, Greedy, Dynamic Programming, Graph Theory, Number Theory, Game Theory*, Probability Theory*, Computational Geometry*, String Algorithms, etc.
Data Structures: Arrays, Objects/Structures, Strings, Queues, Stacks, Trees, Graphs, Heaps, Balanced Trees/Line Segment Trees, Complex Data Structures*, Nested Data Structures*, etc.
Reference link
https://blog.csdn.net/xyqqwer/article/details/81262056
https://blog.csdn.net/weixin_43556527/article/details/102975360
https://blog.csdn.net/weixin_30873847/article/details/95669926
https://blog.csdn.net/GD_ONE/article/details/104061907