CSP 前发一下自己遇到的错误
  • 板块灌水区
  • 楼主_Weslie_
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/10/26 10:56
  • 上次更新2024/10/26 12:38:23
查看原帖
CSP 前发一下自己遇到的错误
511959
_Weslie_楼主2024/10/26 10:56

每日一遍

  • 二维数组不要 memset
  • 输入 long long 不要 %d
  • 输出 long long 不要 %d
  • 拿多少暴力就多少暴力,不要多贪分导致 MLE。
  • 并查集合并时先判断是否已经在一个集合里了。
  • 多组数据,链式前向星存图一定要清空 head 数组。
  • 快速幂要取模。
  • 程序里不要输出调试语句。
  • long long1<<i 要写成 1ll<<i
  • 两点间距离公式是 (yayb)2+(xaxb)2\sqrt{(y_a-y_b)^2+(x_a-x_b)^2},不是 (yayb)2(xaxb)2\sqrt{(y_a-y_b)^2-(x_a-x_b)^2}
  • 负数开平方根会 nan。
  • bfs 入队时如果打了标记出队时就别判断了。
  • 不一定只有 a0\dfrac{a}{0} 会 RE,amod0a\bmod 0 也会 RE。
  • 矩阵乘法重载运算符一定要 return c
  • KMP 求 nxtii22 开始。
  • string 输入了一个长度为 nn 的串,访问 n+xn+x 会 RE。
  • hash 要取模,basenbase^n 也要。
  • 在获取子串 hash 时,h[l-1]*p[r-l+1] 要取模。
  • 拆点空间开两倍。
  • 函数 dfs 调用是 dfs(n),不是 dfs[n]
  • for(int j=head[i];j;j=e[j]=nxt) 不是 for(int j=head[i];j;j=e[i].nxt)
  • 两个图一定要区分开。
  • 如果节点数量是 2×n2\times n,遍历时要写 i<=2*n
  • printf(0) 是错误的,但是 printf("0") 是正确的。
  • 实数二分 mid 不要开 int 类型。
  • 二分是 l<r,不是 i<r
  • 三分是 l<r,不是 i<r
  • 三分 eps 不要开太小。
  • 建新图,清空 cnt 后就不要枚举到 cnt 加新边了。尤其是 Tarjan。
  • 0-1 dfs 当 now==n+1 后要 return
  • 2×1052\times 10^5200000200000 不是 2000020000
  • 树状数组二分 ii 枚举到第 00 位。
  • 树状数组求和 resres 初始为 00
  • 离散化后,树状数组 add 函数就不能写 now<=n 了,要写 now<=len(其中 len 为值域)。
  • 离散化数组要开大。
  • 线段树右区间编号是 (now<<1)|1 而不是 now<<1
  • 线段树标记下传后,不要让 tr[now<<1]+=tag[now<<1](会导致答案过大)。应该是 tr[now<<1]+=tag[now]
  • 线段树先 return tr[now]pushdown
  • 线段树左右儿子不要写反。
  • long long 类型极小值不要赋成 263+2-2^{63}+2,可以是 1145141919810-1145141919810。因为上一个容易爆掉。
  • 线段树单点修改是 tr[now]=y 不是 tr[x]=y
  • 线段树要建树。
  • 线段树 pushdown 完了标记要清空。
  • ai=ai1+ai+1aia_i=a_{i-1}+a_{i+1}-a_i 本质上实在交换差分数组,即 aiai+1a_i-a_{i+1}
  • 线段树 query 要写 pushdown
  • 树建边是 n1n-1 条,而非 nn 条。
  • 输入变量不要用 printf
  • 使用 vector 但是 vector 里没有元素会 RE。
  • 区间长度是 r-l+1 不是 r-l
  • 210=10242^{10}=1024 不是 10001000
  • dp 数组不要写成 d 数组。
  • 模数是 10810^8 不要写成 10910^9
  • 背包容量枚举到 00
  • 对拍时暴力不要写错。
  • 多个循环变量要分开,不要 for(int j=1;j<=n;i++)
  • 两个 dfs 不要写混。
  • 不要用不关同步流的 cin

希望大家在考场上不要犯这些错,rp++。

2024/10/26 10:56
加载中...