备忘录

你可能一道题拿满分的把握都没有。
你可能出考场后发觉原来大多数人也都和你一样。
你可能在出成绩后发现有些和你一样的人成绩还很好看。
你可能在出线后觉得提高一等奖线也不过尔尔,如果你把你能拿的每道题部分分都拿满,你也能一等奖。
但你可能真的要再等一年了。

审题!审题!审题!审题!审题!

对拍!对拍!对拍!对拍!对拍!

那些年我掉过的坑

一、不该错的细节

  1. 忘开long long(十年 OI一场空,不开long long见祖宗)

  2. 循环分不清从1开始还是从0开始

  3. 数组开太小/越界访问(可能导致包括RE,WA,TLE,MLE,UKE在内的一系列玄学错误)

  4. 多组数据时记得初始化

  5. 注意运算符优先级 e.g.(a+b)%c时要加括号

  6. long long的inf要定成(1ll<<63)-1

  7. 变量类型要选对

  8. 时间和空间复杂度要分析

  9. 注意memset对象(double不能memset)

  10. 没写return 0/文件读写

  11. 邻接表存图,双向边空间要开二倍。

  12. 变量名等注意大小写。

  13. 记得删调试代码!(我要这调试代码有何用!)

  14. 线段树节点数组要开元素数的四倍,lazytag也要

  15. 取模时有负数要+mod

  16. 注意a=b和a==b

  17. 多组数据记得初始化

二、思维与习惯上的陷阱

  1. 不要随便copy前面的代码!

  2. 想清楚边界状态!

  3. 函数名不能太接近。

三、隐蔽的深层bug

  1. 结构体赋值要么一个个拷贝,要么operator,不能直接写a=b。

  2. string不能给没有用过的位置直接赋值,它是用一位建一位的。

  3. 手写单调队列要注意比较对象。

  4. hash时注意首位不能为0。(否则会把诸如aaaaa这样的判成相同

技巧和注意事项

  1. -Wall-Wextra

  2. 学会写暴力,学会拿部分分!

  3. /2写成>>1%2写成&1*2写成<<1
    备注:

  4. “无论何时,每行输出都以换行符结尾都是一个好习惯(即使只有一行输出的时候也是)”---StudyingFather

  5. 用特殊数据测边界(比如完全相同类,如100 100 …… 100或剧烈变化类,如1 100000 1 100000 …… 1)

  6. 草稿分区(如瞎写和重要结论分开)

学习方法

下沉式:哪里有洞补哪里

上升:自己读材料,做题升级

裸题-->模块内综合-->模块间大综合

自主探究学习

“思考时间和OI实力有关。如果刚入门OI,啥都不会,想多久都没思路,所以直接看题解就行了。而如果你算法已经熟悉了并且已经刷了大量的题,剩下的就是练思维了,就完全可以花几个小时想一题,因为这种情况大多数时候会不断发展思路,分析出越来越多的性质。实在想不出新的思路再去看题解,这样你也知道你之前的思路是卡在哪一步。”

“一开始可能做得很吃力,你可以大胆花几个小时搞一道题,实在搞不出来再看题解。不要嫌刷题太慢,刷一段时间自然思维能力就上来了。”

“推荐自己做出题目之后也看看题解,有机会收获新的思路。”


对于一个欲探索的问题,可从以下几个方面着手进行探索:

从简单问题入手;从具体对象入手;

从特殊情况入手;从问题反面入手;

从观察联想入手;从创新构造入手;

从形象直观入手;从情况分类入手;

从直觉猜想入手;从问题转换入手;

这就是数学解题之“术”。

posted @ 2022-07-26 21:03  Vasily0959  阅读(51)  评论(0编辑  收藏  举报