C++警示录
·
关于本章:
这是一篇警示录,记录着关于c++14的一些代码错误
尚未完工,仍在编写中
还请大家多多提出宝贵建议
(平时上学,不常回复,但一定尽力,敬请谅解)
前言
实践是验证真理的唯一标准 !!!(但我个人不建议在比赛中实践试错以验证本篇内容。。。)
一、基本
- 十年OI一场空,不开long long见祖宗 (重要!!!)
- RE总是会在数组越界或无限递归时找上你,所以记得造几组数据验证!
(而某谷总是会将RE报成WA的错)
二、DP
- 大部分题目可以抽象模型,但一定要多考虑!多考虑!多考虑!
(除非出题人大发善心,不然在大型比赛中绝不可能出现简单算法板题,耐心地仔细地想想:
“这是不是一个坑?算法思路对不对?会不会是出题人故意想让我们看到的表象?”)
三、数据结构
-
1.优先队列:
先看一看大小根堆写对没有,尤其是结构体的重载!!!
详见:Tsttkx 的 优先队列 (结构体自定义比较)(重载函数) -
2.数组大小:
数组大小一直是一个很严重的问题:(RE之源)
如:重构树开二倍空间!线段树开四倍空间!
四、DeBug
- 遇到问题不要慌,先看一看 遍历 对不对
- 看看定义表每个变量什么意思,每个循环什么意思,最常见的就是把数组 [ ] 中访问的变量传错,
如:
d p [ p a r e n t [ x ] ] − − > d p [ x ] dp[ parent[x] ]--> dp [ x ] dp[parent[x]]−−>dp[x]
DeBug记录表
- 1.检验逻辑正确性:算法思路是否正确?
- 2.用cout确定文件错误点(如精确到:函数 - 行 - 变量)
- 3.修改并验证代码(记得验证,别改了就交)
- 4.记录错误(可选)
(像我一样)
五、其他
- 写freopen版时记得格式
f r e o p e n ( " g o . i n " , " r " , s t d i n ) freopen("go.in","r",stdin) freopen("go.in","r",stdin)
f r e o p e n ( " g o . " , " w " , s t d o u t ) freopen("go.","w",stdout) freopen("go.","w",stdout)去年csp二轮写成了: freopen ( “duel4.in” , “r” , stdin ); - 记得看清数据范围大小(这关乎RE和MLE)
更多推荐
所有评论(0)