请自己原地升天!
-1、区分清楚行列(n,m,q)!!!
0、快读一定记得负数,long long
!
1、定义结构体没敲最后的分号。
编译失败:
2.cpp:33:65: error: invalid declarator before ‘q’
std::priority_queue<Pair,std::vector<Pair>,std::greater<Pair> > q;
2、分治(NTT)每次计算(len)时没有先清零,导致(rev)数组错误。
3、回答询问输出(Yes/No)时,最好在每个询问结束时输出,以防止单个询问重复输出多次(Yes/No)。(以及很多输出时类似的问题。)
4、给区间的两端点离散化后,区间长度相对大小会发生改变,所以有时需预先求出区间的长度。(BZOJ4653)
5、线段树合并时没有写(l==r)的递归边界。(BZOJ3653)
6、不同算法间注意变量、数组重名。(BZOJ4477)
7、要考虑图不连通的情况。(BZOJ2238)
8、(sqrt(),cbrt())函数有精度误差,需要在最后(+0.5)。
9、左移超过(30)位时需要:
(1ll<<n)
(还我(AK)!!!)
10、交互题要在每次输出后写(fflush(stdout))。
11、线段树维护区间矩阵连乘时注意矩阵乘法的顺序(左乘右还是右乘左)。
12、取模取模取模!!!!!!
13、(LCT)的根不一定是原树的根。
14、(std::sin())的比(sin())的精度更高。
15、看到(RE)先开栈。
ulimit -s 1048576
16、使用后缀数组时,如果把两个串连接起来,记得开大相应数组。
17、使用双端队列求半平面交时,插入完最后一条直线后,必须判断队尾是否满足队首。
18、求凸包极角排序时,如果极角相等,那么按照到原点的距离升序排序。
19、(ST)表调用的是(log2()),而不是(log())。
20、(LCT)上单点修改时要先(splay()),修改后(pushup())。
21、输出方案的题目有时也会让你输出最优值,不要忘记。
22、两个(-inf)相加时,结果与(-inf)取(max)可以防止爆精度。
22、将原数列和询问一起离散化后要注意权值线段树等类似数据结构的大小,数组要开够。
23、(NTT)取模时(if)会更慢。
24、维护子树信息的(LCT)在(link(x,y))时需要先(split(x,y))。
25、增量构造(SAM)时记得给字符(-'a')(依情况而定)。
26、DP的非法状态要设为(+inf)或(-inf)。
27、FFT的(pi)不要手打。
28、扫描线倒着扫描时指针初值是(n+1)。
29、后缀树和点分树父子节点之间距离不一定是(1)。
30、使用后缀数组求(lcp)时先判两个后缀是否相同返回后再转换成rk[x]
。
31、使用std::reverse()
等类似函数时要注意下标是从(0)开始还是从(1)开始。
32、拆系数(FFT)做完(IDFT)后合并时要注意取模。
33、线段树标记永久化后不能pushup(o)
。
34、看清模数是什么。
在这里贴几道神仙题
BZOJ3232