课程计划 & 做题套路(时间复杂度分析等)& 递归
课程计划
y总的计划安排:
1. 系统讲解知识点
2. 刷历年真题
3. 打模拟赛
知识点
- 基础算法:递归与递推,排序,二分,前缀和,双指针
- 数学知识与数论
- DP
- 枚举,模拟
- 树状数组与线段树
- 搜索与图论
- 贪心
- 一些小知识点
模拟赛
模拟真实考场的心态
刷题
省赛省一:200题以上
国赛考好:300题
不仅要重视写题的能力,更要重视调试的能力。调试花的时间远比写代码花的时间长
做题套路
算法题特点
- 模型相对较少
- 思维量较大
- 想法要落在代码实践
思路过程
- 从题目描述中抽象出模型
- 回忆之前学过的算法或做过的题目,找到可行的方法(平时要多刷题多积累)
- 检验算法
- 正确性
- 时间是否超出限制(一般不用考虑空间复杂度)
- C++一秒计算 $10^8$ 次,所以算法时间极限一定要控制在 $10^7$ ~ $10^8$
- 夹带点私货:基础课时空复杂度分析
递归
函数内部调用自己
int f(int n)
{
f(n - 1);
}
cin cout
与 scanf printf
输入数据数在 $10^5$ 内可以用 cin cout
,超过 $10^5$ 建议 scanf printf
cin cout
优化代码:
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//在用之前加
优化后接近 scanf printf
,个别情况下可能还是比 scanf printf
慢
scanf printf
使用时最好加上 #include<cstdio>
递归顺序分析
- 递归 -> 递归搜索树
- 函数体之外的第一次调用是树的根节点
- 正在调用的函数是父节点,函数内的每一次递归调用产生一个子节点
- 递归的顺序就是从根节点开始对树进行深度优先遍历的顺序
- 函数调用就进入子节点,函数返回就回溯
这是在哪看到的呀hh
蓝桥杯辅导课第一节课,可以在acwing看,也可以在b站看 试听课
好的谢谢hh