考前提醒

置顶:一定要对拍

  1. 不开 long long 见祖宗(还有 __int128)。

不开 long long 见祖宗。

不开 long long 见祖宗。

1<<n, for(int i = 1, x; i <= n; i++)

  1. 多测要清空,清空要把所有影响的全局变量清空

多测要清空

多测要清空

  1. 排序时要把所有有关系的元素丢进结构体里

  2. 如果使用自定义函数进行sort,需保证相等时返回false

  3. 数组一定要开够。如双向边要开两倍,新加辅助点也要开两倍。写完要检查一下。

  4. 不会的题不要忘了拼部分分

  5. 前面的题想不出来可以去想后面的题,难度不一定正序,特别是部分分的性价比。

  6. 注意题目是否要求输出方案的步数。

  7. 过不了样例不一定是结论错了,要检查写挂的地方。

  8. 数据多测时,特判不能直接 return 0;break;,要写 continue;,而且要在读入完数据之后。

  9. 关闭同步流后不能用除了 cincout 以外的输入输出方式。

  10. 看清楚模数。

下面是易写错的地方:

  1. === 分不清,如写并查集的时候。

  2. 平衡树一个点的 \(sz\) 要设为 \(1\), pushup 时要 \(sz\) 时左右孩子之和加 \(1\)

  3. 求 e-DCC 时不用判重边自环,但要判断父节点的反边。求 v-DCC 时要判自环,否则判孤立点时会出问题(似乎可以在判孤立点时判断,但输入时判断更简便),不用判重边和父节点。

  4. 求 v-DCC 时满足 \(dfn_x \leq low_y\) 时即可输出点双联通分量。求割点时当 \(x\) 为根节点时,至少要有 \(2\)\(y\) 满足条件

  5. 多测时清空 \(dfn\) 数组。

  6. 求删去一个点后会多出几个连通块时,答案不是这个点是否时割点,而是这个点被多少个 v-DCC 所包含(再减一)。

  7. 每一次,每一种修改都要写 pushup , 除了建树其他都要写 pushdown(如果有懒标记的话)。(重要!重要!!重要!!!

  8. 空间要开的足够大,特别是可持久化线段树,线段树合并。

  9. 在动态开点线段树中,如果采用的是带引用地址的的写法,记得每当有新建节点的操作时引用变量。

  10. 递归过程中要保持答案区间 \([l,r]\) 不变,不要手滑写成 \([l,mid+1]\)\([mid+1, r]\)

if(x <= mid)
	//do sth;
if(y > mid)
	//do sth;

上面第三行不要写成 else

  1. 四边形不等式不要对中间结果进行任何近似,和最大值取min等影响精确度的操作,不然会违反决策单调性。
posted @ 2024-09-30 10:27  louisliang  阅读(5)  评论(0编辑  收藏  举报