第47课 考前最后一课
最后一周的训练:
* 入门题能对: T1没问题
* 普及-题能对:T2没问题
* 普及/提高-(普及 & 提高-)能对:对标T3、T4
* 普及+/提高能对:部分年份的T4
考场注意事项:
* 不要爆零(freopen格式)
> -freopen("code.in", "r", stdin);
> -freopen("code.out", "w", stdout):
> -fclose(stdin);
> -fclose(stdout);
> -不要忘记删测试语句,建议用cerr语句(和cout用法一样)来测试
> -提交代码前,检查三遍freopen有没有写错
> -提交文件的时候,保证一定有cpp源文件
* 大数据一定要验证
> Excle公式 =IF(A1=C1,1,"xxx"
A B C 1 1 1 1 2 xxx
* 心态保持稳定(遇到难题很正常,深呼吸,慢慢想)
做题时:
* 第一步,看数据范围,注意 long long ,注意时间复杂度
* 第二步,写代码的时候,注意时间复杂度是否会超时。T3、T4根据题目特征确定算法
T3T4骗分粪决
骗分路径
做法 预期分数 关键点 找特判,n=1,答案是全1 or 全0 5~10 看部分分,看数据范围,看特殊性质 DFS枚举每一位 10 DFS剪枝优化,剩余棍数<0或者>7*剩余位数就返回 30~40
深搜骗分通用技巧
DFS优化技巧
1.可行性剪枝 :当前状态已经不可达到目标 -> 立刻return
2.最优性剪枝 :当前解已经不比最优解好 -> 立刻return
3. 记忆化(搜索 -> DP的桥梁)
当你发现DFS的参数组合 (a, b, c) 会重复出现时,加一个数组记录是否会重复出现,如果重复了直接返回结果
4. 搜索顺序优化
> 优先搜最大的/最小的 :按题目直觉,先搜更可能有解的分枝,更早出触发剪枝
> 优先搜必须要搜的位置 :比如先把广搜扩散的所有起点放入队列