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,尤其是有子串哈希值查询时。 -
int乘int时留意会不会炸。 -
能少取模就尽量少取模,避免常数起飞。
-
FFT 最后要加一个 \(0.5\) 左右的数以校准运算过程中产生的误差。
-
~i等价于 \([i\neq -1]\),i等价于 \([i\neq 0]\)。作为循环条件时注意区分。 -
线性筛找最小质因子时,只要遇到了一个合数就要更新其答案。
-
尝试通过预处理逆元、阶乘逆元来实现 \(O(1)\) 组合数时注意模数是否为质数,以及模数会不会比预处理规模还小。
-
少写
define int long long。 -
带修莫队在修改时,无论当前修改位置在不在询问区间,都要将原序列的值与修改的值交换。
-
不能用
memset给浮点数赋值。

浙公网安备 33010602011771号