学习OI犯过的**错误(因为笔者一直**所以会不断更新)(整理评论中)

前言

因为笔者弱到无法形容,因此没有办法写出什么有意义的题解,所以本章的主要目的就是为了记录下笔者自己犯过的垃圾错误同时帮助和我一样的初学者(如果能帮到的话),减少因低级错误而浪费时间。(这当中的一部分可能您认为毫无意义,但都是笔者犯过或者调试了很久的)如果有大巨佬无意之中看见了本篇blog,请留下自己在学习OI中的一些错误吧,这真的会对笔者这样的蒟蒻起到很大的借鉴意义。

特别鸣谢

cqbz oj 上的各位大佬

头文件中的错误

头文件打少了

-- by ybmyh

用惯了cin,cout比赛时打scanf忘了打 #include < cstdio>了

-- by cqbzgm(说的)

输入输出中的错误

变量输入不打 &

变量在用 (scanf) 的时候需要打上&,但在输入字符串的时候,就不需要打 & 啦

输出时打上了&

--by C2022lihan

字符串打了&

同上

输入字符串的时候没用 (s + 1),但后面的循环从1开始

要么所有的循环都从0开始(有点麻烦),要么就 scanf("%s", s + 1);

cin<<...... cout>>...... int a[100101] cin>>a;

--by C202301hexinyang

储存时的错误

炸int

(long long)

炸 longlong

开高精或者_int_128

__int128在NOIP中不能用,因为测评机太古董 ---by LHY (由C202201tanfuwen 发在评论区)

玄学错误 ---by YBC20220417wangzhengjie

本错误是笔者在帮左边的wzj同学调代码的时候发现的,他不小心把int写成了char类型,本想着可以char类型会转换为ASC码,但是却忽略了ASC码只有128位,就炸了。。。

定义时的错误

const double 写成了 const int

可能或许是因为 const double用得太少了

二分中的错误

因没有合理的缩小范围,出不了循环

在写二分的时候就仔细想想,是不是每一次都可以缩小范围。

在缩小范围的时候把答案排除在了循环之外

笔者在最开始打二分的时候,凭运气瞎猜,与其这样还不如静下心拿出一张草稿纸来思考。

关于已经形成了二分模板的问题:因为笔者刚学二分的时候,有点迷糊就看了一篇很多种二分变形的blog,结果自己学得不到家,就老是会搞混淆。

数据范围

偷懒打Floyd,结果没有看数据范围,就。。。。。

老老实实打 (Dijkstra)

求最大值最小值等时的错误

没有赋极大值或极小值

求极大值赋极小值,求极小值赋极大值

函数调用时的错误

写函数没调用

-- by x6wangxiye

不知道该分到哪个区的错误

做组合数问题因为没有看到组合数可以用阶乘抵消掉而原地爆炸

--by Walking_Dead

写了函数不调用

--by x6wangxiye

好用的经验

建议想到思路后再想一下,不然真的会自闭

--by C2022lihan

如果大佬能留下自己犯过的错误,那会对笔者这样的蒟蒻起到极大的借鉴作用 orz

夜空中最亮的星,请照亮我前行
原文地址:https://www.cnblogs.com/Nefelibata/p/13909756.html