警示自己

· · 闲话

RT,本文用于收录一些我自己在做题或考试策略方面易犯的错误或常用的技巧。

  1. 幂塔顶端可能为 0

在做幂塔类题目时,可能会出现幂塔顶端为 0 的情况(比如这个),此时需要先判断幂塔是否已经到达顶端,再判断模数是否为 1

  1. 矩阵乘法没有交换律

在做矩阵优化递推 / dp 类的题目时,经常会想把哪个矩阵写在前面就把哪个矩阵写在前面(比如这个)。但如果两个矩阵不都是正方形时可能会出错。

  1. 在打 freopen 的同时,一定要加上 #include <cstdio>

  2. 一般情况下不要嵌套三目运算符,因为这样极容易出错。

  3. 在使用 floyd 求全源最短路时要注意重边和自环

在使用 floyd 前建边时,如果题目没有保证没有重边和自环(比如这个),一定要把旧的 dis 赋值为旧 dis 与新 dis 的 \min \operatorname{or} \max

  1. 调 pushdown 比较复杂的线段树题(比如这个)时如果总是过不去样例但确定自己的思路完全正确、代码逻辑基本正确,可以考虑打开 -Wall

  2. 遇到结果含绝对值的贪心题(比如这个),如果没有其他思路,可以考虑枚举每项绝对值的符号。

  3. 如果要用值域分块做要求一个数在全局或区间的排名的题(比如这个),排名应该是严格小于它的数的个数 + 1 而非小于等于它的数的个数。

  4. 遇到模数 \times k \geq 2^{31} 且会出现 k 项的加法取模的题目(比如这个),一定要开 long long

  5. 遇到斜率一样但是截距可能不同的斜率优化 dp,一定要取等

  6. 对拍时在随机数据外,应当用自己能想到的一切可能 hack 的数据来对拍。

  7. startsizeref 是关键字。

  8. 开 long long。开 long long。开 long long。开 long long。开 long long。开 long long。开 long long。开 long long。开 long long。开 long long。

  1. 注意端点。注意端点。注意端点。注意端点。注意端点。注意端点。注意端点。注意端点。注意端点。注意端点。(比如这个)

  2. 遇到有一个很长的原串,每次输入一个拼接在其后的字符串的情况,不要直接求拼起来以后的串的长度而应该只求拼接上去的字符串的长度(比如这个)。

  3. 找仙人掌的环(即大小 > 2)时要把只有两个点的情况判掉。

  4. 当自己的编码与题给编码方式不同,请注意是否混淆了两者

  5. 你为什么不能直接 dp。

  6. AC 自动机上 fail_i 未必小于 i

  1. 不要强求通过某一道题(明显是签到题者除外),要以分数定目标。

  2. 结论一定要大胆猜,可以写个暴力打表;明显是签到题者不要想复杂了。

  3. 在纸上至少列出一个算法提纲后再开写;对于实现细节可能较为复杂的题可以具体写写代码实现方式;遇到问题或发现可以明显简化的部分,先停下来想好了再说。

  4. 想题时可以先锁屏,避免题目摆在那里对思考的干扰;还可以锁屏放松几分钟再来想。