CSP-J 复试考点

复赛历年知识点

四个题目的分析

T1:

以基础为主,基本想到解法不会太难,算法比较明显,一般用模拟,或者和数学关系较直接。

T2:

程序量要大一点,可能会用到一些基础算法,比如贪心,枚举,搜索之类。学生在做的时候有时候会遗漏考虑点。

T3:

难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。

T4:

一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。

重点算法归纳

总结起来想取得好的成绩,这几个相对比较重要的算法一定要学好:

1. 枚举

枚举算法是指,列举出所有可能的取值,从中找出最优解。

2. 模拟

模拟算法是指,通过逐步进行操作、逐步判断来推断是否符合题目中所给出的情况。非常耗时,一般不可能得到最优解,但是可以得到部分分数。

3. 高精度

高精度一般来说会用在递推、动态规划求方案数,以及组合数学直接计算的方面。一定要熟悉高精度的加减乘,除法和求余相对出现的较少。

4. 字符串

主要是字符串的一些相关操作和技巧。

5. 贪心

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。在关键时刻可以做出一些避免超时的决策,在比如说搜索、动规时也可以起到相对重要的作用,大大减少状态数。

6. 动态规划

动态规划主要的思考规律:

定义函数(动态转移方程中转移量的定义)——>建立方程——>确定初值和边界。对思维的周密程度和逻辑要求非常高。可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。

7. 图论

最短路和最小生成树。最短路中需要学习Dijkstra算法和Floyd算法。近年来图论题目越来越难,至少掌握这两种。最小生成树需要掌握Prim算法和Kruskal算法。前者适用于稠密图,后者适用于疏密图。两者可以比较学习,比较它们的优点和不足。

8. 常用的数据结构

最常用到的是堆(优先队列)、并查集以及树状数组堆。堆:只关注“直系亲属关系”,不关注“旁系”。常配合贪心使用。并查集:快速判断两个元素是否有关联,增加其他算法,还可判断元素间关系。树状数组堆:平衡查询和修改的操作复杂度的一种算法,常用于解决需要查询和修改的问题。

9. 搜索

深度优先搜索和广度优先搜索。深度优先搜索:一条路走到底。广度优先搜索:每一步将下一步的可能性放入队列中,然后按照队列顺序来探测。比赛中往往会加入很多复杂的元素。

10. 数学知识

快速幂、高精度、筛法选素数、辗转相除法。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值