CCF编程能力等级认证(以下简称GESP)每年四次认证时间分别为:3月、6月、9月2、12月,认证方式为线下机考,认证语言包括:C++、Python和Scratch三种语言,其中Scratch认证为一到四级,Python和C++认证为一到八级。
一、C++五级考点
1. 初等数论
素数与合数、最大公因数与最小公倍数、同余与模运算。
质因数分解、欧几里得算法、埃氏筛法和线性筛法。
重点:掌握质数判断、GCD/LCM计算、模运算应用以及高效筛法。
2. 算法复杂度估算
分析多项式和对数复杂度算法的时间效率。
理解大O表示法,能够分析循环、递归等结构的复杂度。
3. 高精度运算
用数组模拟高精度加、减、乘、除。
重点:处理大数运算边界条件,实现进位和借位逻辑。
4. 线性表(链表)
单链表、双链表、循环链表的增删查改操作。
重点:熟悉指针操作和动态内存管理。
5. 二分算法
二分查找、二分答案(如最大值最小化问题)。
重点:确定单调性,设计合理的判定条件。
6. 递归算法
递归设计、时间/空间复杂度分析、记忆化优化。
重点:理解递归栈和尾递归优化,避免重复计算。
7. 分治算法
归并排序、快速排序、分治思想的应用。
重点:掌握分治策略,解决逆序对、最近点对等问题。
8. 贪心算法
贪心选择性质、最优子结构。
重点:证明贪心策略的正确性,解决区间调度、背包问题等。
二、学习计划
第1周:初等数论与算法复杂度
学习内容:
素数、合数、最大公因数、最小公倍数、模运算。
欧几里得算法、埃氏筛法和线性筛法。
算法复杂度分析(大O表示法)。
练习:
完成洛谷OJ上的相关练习题:
[P1075](质因数分解)
[P3383](线性筛素数)
[P1029](最大公约数和最小公倍数问题)
第2周:高精度运算
学习内容:
高精度加、减、乘、除的数组模拟。
练习:
完成洛谷OJ上的高精度练习题:
[P1601](A+B Problem 高精度)
[P2142](高精度减法)
[P1303](高精度乘法)
[P1480](高精度除法)
第3周:链表与二分算法
学习内容:
单链表、双链表、循环链表的操作。
二分查找、二分答案的实现。
练习:
完成洛谷OJ上的链表和二分练习题:
[P1996](约瑟夫问题,循环链表实现)
[P2249](查找区间内数的位置)
[P1873](砍树,二分答案)
第4周:递归与分治算法
学习内容:
递归设计、复杂度分析、记忆化优化。
分治算法(归并排序、快速排序)。
练习:
完成洛谷OJ上的递归和分治练习题:
[P1228](地毯填补问题,分治递归)
[P1177](归并排序模板)
第5周:贪心算法与综合练习
学习内容:
贪心算法的应用,证明贪心策略的正确性。
练习:
完成洛谷OJ上的贪心练习题:
[P1223](排队接水,经典贪心)
[P1803](线段覆盖,区间贪心)
[P1090](合并果子,优先队列贪心)
综合练习:
模拟考试,按照考试时间和题型进行练习。
总结错题,强化薄弱知识点。
三、学习建议
1. 按知识点刷题:先掌握基础算法模板(如高精度、筛法),再解决综合问题(如二分答案、贪心)。
2. 复杂度分析:每道题完成后,尝试分析其时间/空间复杂度。
3. 递归与分治:注重代码实现与优化(如记忆化剪枝)。
4. 链表与高精度:多写底层模拟代码,避免依赖STL。
5. 模拟考试:定期进行模拟考试,熟悉考试流程和题型。
希望这份学习计划能帮助你顺利通过GESP C++五级考试!