while(吃一堑);
用于记录做题过程中打出的唐诗操作。
-
线段树要调用
pushup。 -
动态开点要把空间开够。
-
二分乱搞之前先检查一下有没有单调性。
-
慎用
unordered_map。 -
分块不要忘记初始化。
-
调块长的时候块数也会跟着变,所以原本开的数组可能不够大。
-
使用快读时留意会不会爆
int,以及需不需要考虑负数。 -
用
fread快读或关流cin的话就要杜绝所有别的输入方式。 -
前向星存无向图要开两倍空间。
-
网络流的边号要从 \(0\) 开始,这样才能用
^1取到反边。 -
不要指望靠 O3 和 Ofast 的力量在 MZOJ 上 \(n^2\) 过百万。
-
如果离奇 TLE,优先排查是否某个地方考虑错了,而不是上来就开始卡常。
-
min和max不要宏定义。 -
序列分块的
loc数组要开到 \(n\) 而不是 \(\sqrt{n}\)。 -
数据规模上了 \(3\times 10^5\) 就不要优先考虑分块了。
-
往 OJ 上交代码的时候检查有没有去掉文件 IO。
-
多测题留意行末换行。
-
有 LCA 的题在卡常时可将倍增 LCA 换成 RMQ LCA。
-
bitset在访问下标不连续时可能会有负优化。 -
POJ 往往是多测且不一定会说明,如果莫名其妙地 WA 了优先考虑改成多测。
-
POJ 上只有 C++98,因此不能用
getchar()或getchar_unlocked()。 -
A* 跑 \(k\) 短路时最好把正向图和反向图分开建,以免因遇到老爷机而被卡常。
-
前向星存图最好把整个
head数组全部赋成 \(-1\),以免玄学虚点没有被初始化到。 -
跑同余最短路时记得检查模数是不是弄成了 \(0\)。
-
Dinic 的广搜部分在清空深度数组时注意循环上界不一定是 \(n\),尤其是拆过点时。
-
莫队每轮求出的答案是
ans[qu[i].id]而不是ans[i]。 -
使用多个分块结构(例如莫队套值域分块)时注意不要混用。
-
回滚莫队在回滚时注意边界问题,同时注意更新左端点。
-
做哈希时若无需自然溢出就不要用
ull,尤其是有子串哈希值查询时。

浙公网安备 33010602011771号