sb合集
开个坑,记录一些自己的sb错误。
\(\text{Think twice, Code once.}\)
最后检查的时候开 \(\texttt{-Wall}\)!!!
最后检查的时候开 \(\texttt{-Wall}\)!!!
最后检查的时候开 \(\texttt{-Wall}\)!!!
- \(\Huge \rm{Tarjan!!!}\)
-
不要看错题。不然会寄惨。
-
不要将 \(n, m, k, q\) 之类的看混了(哪个是长度,哪个是询问数,哪个是权值范围)。
-
小心宇宙射线,他可能会让你的代码变成这样:
for(int j = 0; j < n; j *= 2);
- 用 \(\tt std::set\) 装 \(\tt Node\) 的时候要谨慎,因为如果两个 \(\tt Node\) 不一样但是 $\tt operator == $ 判断他们相等,那么后插入的元素就会被吃掉。
- 时刻取模,不然可能喜提 0pts 的好成绩。
- 线段树时时刻刻都要 pushup 或者 pushdown。
- 不要为了好玩(滥用)将主函数的东西用结构体构造函数写。
- STL 空间常数比较大,典型的例子就是用 vector 存 1e6 的图遇到 125MB 可能会 MLE(当然正式比赛应该不会有这个问题)。
- 注意STL(主要是vector 和 set)迭代器失效问题带来的 RE。
- \(\rm !Important\) 想起来开 \(\tt LL\) 了一定要把 \(\tt scanf\) 改成 \(\tt \%lld\) !!!(CSP-S 云游 -90pts)
- 注意:
ans += 1LL * (sz[u] * sz[u]); // NO, this will first calculate sz[u] * sz[u] with typename int, which result will cause signed integer overflow.
ans += 1LL * sz[u] * sz[u]; // YES. When the second sz[u] is calculated, it's considered as LL.
- 写快了可能导致 \(\tt -=\) 写成了 \(\tt =-\),变成了负号!看着真的像宇宙射线带来的数据异变!
- 存图的时候 \(\tt adde\) 函数已经双向建边了就不要再调用两次了。
- submit 的时候注意 \(\tt freopen\) 以及有没有多余的输出。