警钟长鸣
就是一些小技巧。也可以说是警钟。
sort函数排序不具有稳定性。- 不开
long long见祖宗。 - 特殊情况下,开了
#define int long long见祖宗。 memset见祖宗。- 大量输入建议使用快读。
- 线段树维护区间最小值区间覆盖
lazy的初始值要赋成INF。 - \(C_n^m\) 在满足 \(n\ \&\ m=m\) 的位运算关系时,值为奇数,否则为偶数。
- 一个代码中,有多个队列或者多个栈时,不要把他们搞混了。
vector就算不往里面存数也会占很多空间。- 用
long long做二进制时,要写成1ll << x。 - 当线段树同时维护区间加和区间乘时,下放标记时应先下放乘法标记再下放加法标记。
- 写 FHQ 时注意若该节点没有左右儿子,谨慎进行
pushdown和pushup。目的是不要给 0 节点加上奇奇怪怪的东西。 - 使用快读是应注意题目输入中是否存在负数。
- 写离散化的时候
lower_bound时记得使用unique后的序列长度。 multiset常数过大可尝试使用可删堆代替。#define慎用,(x)一定要带括号。比如#define S(x) (x * x)可能错误,应写为#define S(x) ((x) * (x))。- 把区间加离线下来做差分,这种情况记得开二倍空间。
- 据 UKE_Automation 获悉,一个排列,交换,这些关键词出现考虑逆序对。
- 莫队可以采用奇偶性优化:
struct nodeq {
int l, r, id;
bool operator < (const nodeq & cmp) const {
return bel[l] != bel[cmp.l] ? bel[l] < bel[cmp.l] : (bel[l] & 1 ? r < cmp.r : r > cmp.r);
}
} q[N];

右图是杨彪。
写一些这个警钟是十分必要的。这个不仅是一些做题技巧,而且是一些一定不能再错的东西。细节性问题,一定要注意。
浙公网安备 33010602011771号