ruozhi 小错误

弱智错误记录

前言

2024.08.03 从 2024.08.03 开始记载,旧账就不记了。

2024.09.23 我最擅长的事情就是写 bug 了。期望 \(400pts\),实际 \(220pts\),比 CSP-J2023 挂得还猛。

2024.09.30 回顾了两个月的弱智记录,真是很有意思,足够抽象。ssyx 座右铭不敢写不开 long long 见祖宗和菜就多练是多么遗憾的事情。可惜 ssyx 当年没有能懂我这个座右铭的朋友。

2024.10.30 静态查错成功率太低,主要是我特别眼瞎。还是选择手模小样例查错法吧,虽然比较麻烦。或者选择先静态查错再手模小样例的方法。

2024.11.01 发现好像写错变量名才是最常见的错误,不过也许是因为这种错误小样例就可以查出来,不像没开 long long 那么难查,因此这种错误相对不那么被大家厌恶吧。

2025.02.10 有一段时间忘记记录了,那就从今天开始继续吧!

2025.02.25 发现静态查错能力提高了不少,我认为是打 ABC 的功劳。

记录

不开 long long 见祖宗!

  • 2024.09.12 写打表程序,由于数字之间是空格,故再写一个程序把空格转为 ,,然后这个程序没开 long long,且原程序的存表数组也没开……
  • 2024.09.13 存逆序对个数忘记个数是 \(O(n^2)\) 级别的了。
  • 2024.10.18 写 (long long)=(int)*(int) 没有开 1ll
  • 2024.10.21 线段树函数 maketag 参数没开 long long,喜获 \(95pts\)
  • 2024.10.17 将 long long 类型数组 memset0x3f,然而判断相等的时候 inf=0x3f3f3f3f,是 int 类型的常量。
  • 2024.11.18 差积没有开 long long。
  • 2025.02.10 题目满足输入和输出在 int 范围内,我以为出题人会友好地让过程也在 int 范围内。
  • 2025.02.11 线段树 long long 类型的 query 函数,中间变量没有开 long long
  • 2025.09.22 输入数据 \(k\) 的取值范围是 \(O(N^2)\) 的。

左移右移溢出

  • 2024.09.23 写了个 1<<O(1e5) 的东西。
  • 2024.09.23 写了个 1>>32
  • 2024.10.05 写了个 n>>k,其中 \(k \le 10^5\)

看错题

  • 2024.09.10 把输出最大值看成输出编号,关键还过了样例。
  • 2024.09.23 t1 没看到向下取整。
  • 2024.10.07 没看到 \((x,y)\) 在花园里,以为可以出界。
  • 2024.10.09 雨天的尾巴把值域看成了 \(n\)
  • 2024.11.20 无解输出 IMPOSSIBLE,我输出了 -1
  • 2024.11.29 没看到题目写着操作只能对长度至多为 \(3\) 的区间进行,导致以为是不可做题(虽然确实是不可冲正解题)。
  • 2025.02.25 题目输入每个节点的父亲编号,我以为是输入每条边。

文件读写

  • 2024.08.03 stdout \(\to\) stdin
  • 2024.09.29 都怪 Dev 的缺省源,害我没改文件读写直接关掉 LOCAL 交了题目。文件读写写的还是 in.txt my.out
  • 2025.02.25 写了 freopen("my.out","r",stdout);

调试代码

  • 2024.08.04 提交不注释调试代码。

小笔误

  • 2024.09.06 因为一个 = 写成了 += 调了好几天
  • 2024.11.04 把 while 写成了 if
  • 2024.11.15 把 ++ 写成了 --
  • 2024.11.19 把 b[i] 写成了 i
  • 2024.11.29 把 _add() 写成 add()
  • 2024.09.09 _add(a,b) 定义里面 \(a\) 没有加引用。
  • 2024.02.15 把 _mul 写成 mul
  • 2025.09.02 把 + 打成 =dep[u]=dep[f]=1;
  • 2025.09.02 把 tp 打成 utop[u]=u
  • 2025.09.02 将 p[i+1] 写成 p[i]+1
  • 2025.09.02 没写 st.pop()
  • 2025.11.19 把 while 写成 if 了。

忘记取模

  • 2024.11.26 线段树 pushup 一个地方忘记取模。

变量名

  • 2024.08.04 \(i\) 写成 \(j\)
  • 2024.08.06 \(u\) 写成 \(i\)
  • 2024.09.19 \(b\) 写成 \(a\)
  • 2024.10.14 \(v\) 写成 \(u\)
  • 2024.10.18 \(val\) 写成 \(w\)
  • 2024.10.22 \(wa\) 写成 \(ca\)
  • 2024.10.30 \(m\) 写成 \(n\)
  • 2024.11.1 结构体内变量名 \(cnt\) 与全局变量重名,\(::cnt\) 写成 \(cnt\)
  • 2024.11.26 模数 \(p\) 与结构体中 zkw 线段树的虚点 \(p\) 变量名冲突。
  • 2025.02.25 两层循环都使用变量名 \(i\)

写错类型

  • 2024.09.14 把字典树的儿子数组写成了 char,鉴定为有 \(26\) 个字母儿子且变量名为 \(ch\) 误导导致。

数组没开够

  • 2024.09.12 把 \(100\%\)\(3\times 10^5\) 看成部分分的 \(1\times 10^5\) 了。
  • 2024.09.19 由于有多个常量,把某个数组开成了另一个大小。
  • 2024.09.22 FFT 数组没开两倍。
  • 2024.09.23 \(cnt\) 数组应该开 \(\log_2=32\) 个,然后我开了 \(20\)
  • 2024.01.03 \(n_1 \le 100,n_i \le 2n_1\),因此 \(n_i \le 200\)
  • 2025.01.03 终点的坐标的取值范围,除了考虑起点坐标,不要忘了考虑操作的影响。
  • 2025.2.10 线段树没开 \(4\) 倍。
  • 2025.3.2 省选 Day2 t2 数组没有开够挂了 \(12pts\)。无向图的边应当是 \(n^2\) 而不是 \(O(n)\) 的。
  • 2025.6.12 最后存答案的数组应该开 \(N^2\),我开成了 \(N\)。以后编译时一定开 -fsanitize

下标越界

  • 2024.10.05 只开了 \(n\) 的数组,忘记判 \(len=n\) 的情况,导致出现了 \(len+len\) 的下标。
  • 2024.12.19 树上背包问题,加入点 \(u\) 时没有判点 \(u\) 的体积是否越界。

边界条件

  • 2025.02.15 没判 \(n=1\)
  • 2025.07.23 判 <= 写成了 =
  • 2025.09.03 没判 \(cnt=1\)
  • 2025.10.08 答案最小可以取到 \(0\) 而不是 \(1\)

时间复杂度写假

  • 2024.10.10 不小心套了个快速幂导致多一只 \(\log\)
  • 2025.02.25 注意 resize \(n\) 的空间时间复杂度也是 \(O(n)\) 的。
  • 2025.07.18 Dijkstra 的总边数在变换建图之后从 \(O(m)\) 变成 \(O(m^2)\) 了。

时间复杂度估算错误

  • 2024.09.14 在字典树上查找有多少个单词属于一个字符串的后缀,由于所有单词的长度不超过 \(N\),最多只有 \(\sqrt{N}\) 个单词。
  • 2024.11.26 \(\sum_{i=1}^m \frac{m}{i} = m \log m\)。没看出是调和级数,我以为是 \(m^2\) 级别。
  • 2025.07.22 小常数 2e8 可以过 3s。大概是 1e8 用时 1s。
  • 2025.11.17 把 1e4 级别看成了 1e5 级别。

初始化

  • 2024.08.04 多测不初始化。
  • 2024.09.23 分块重构块 \(tag\) 忘记初始化为 \(0\)
  • 2024.12.17 有两处忘记清空桶。
  • 2025.01.02 重载矩阵乘法运算符,临时变量没有清零。
  • 2024.02.11 线段树非叶子结点的 \(\max,\min\) 标记没有初始化。
  • 2025.07.21 多测线段树只清空了叶子结点。
  • 2025.10.07 基数排序 \(cnt\) 数组需要清空(因为有前缀和)。
  • 2025.10.15 树形 DP 记录前面兄弟的标记开了全局变量。

初值问题

  • 2024.09.10 写 \(a_i\not = a_{i-1}\) 的条件,且 \(a_1=0\),下标从 \(1\) 开始,忘记给 \(a_0\) 赋值为 \(-1\)
  • 2024.10.24 整除分块,忘记第一次扫到值 \(\ge T\) 的时候需要将指针初始为 \(1\)
  • 2024.11.03 线段树乘法懒标记没有初始化为 \(1\)
  • 忘记写 siz[u]=1

混淆

  • 2024.11.28 把 (n>>1)+1 写成了 n>>1|1,和 n<<1|1 的线段树写法搞混了。
  • 2024.02.15 求 \(W\) 的幂的线性逆元时,把乘上 \(W\) 写成阶乘逆元的乘上 \(i+1\)
  • 2025.10.08 普通线段树的 change 需要 pushdownpushup,而 query 只需要 pushdown
  • 指数不可以对 \(mod\) 取模,而是应该对 \(mod-1\) 取模。

语法/算法不熟悉

  • 2024.09.22 sizeof 长度忘记乘上类型所占字节数。
  • 2024.11.20 queue 默认初始空间是 \(32\) 个单位,不可以在任意时刻开 \(4 \times 10^6\)queue,否则程序会卡住并被杀死。
  • 2025.09.22 埃氏筛时间复杂度是 \(O(n \log \log n)\)。(初赛知识点)
  • 2025.09.29 modint 里面使用 unsigned,减法要先加再减。

算法板子打错

  • 2024.09.09 分解质因数忘记 \(>\sqrt{n}\) 的那个质因数。
  • 2024.09.23 NTT 求 \(rev\) 数组把 len-1 写成了 1<<(len-1)
  • 2024.10.14 Dijkstra 优先队列优化松弛操作先 push 再修改 dis,并且调了一个晚上。
  • 2024.10.22 线段树区间查询结束递归条件写成了单点查询的 l==r
  • 2024.11.13 埃氏筛标记合数的时候把 j++ 写成了 j+=i,原因是把标记 \(j\) 和标记 \(i\times j\) 的两种写法搞混了。
  • 2025.01.03 求组合数 \(\binom{n}{m}\) 的时候,判无解除了 \(n<m\) 的情况,还需要考虑 \(n<0,m<0\) 的情况。
  • 2025.02.14 树上启发式合并遍历轻儿子时忘记判掉重儿子。
  • 2025.02.18 dinic 算法的当前弧优化应当是在循环里面写 cur[u]=i,如果将 \(i\) 定义为 \(cur_u\) 的引用,时间复杂度会假。
  • 2025.07.19 Dijkstra 存进优先队列的 dis 不能改!否则会影响排序的正确性!
  • 2025.09.02 重剖找 LCA 中:if(dep[u]<dep[v]) swap(u,v);,应该为 if(dep[top[u]]<dep[top[v]]) swap(u,v);
  • 2025.10.08 建圆方树 pop 栈的时候,应该 pop\(v\) 为止,而不是 \(u\)
  • 2025.10.15 动态开点线段树加法标记,忘记将标记乘以元素个数。
  • 2025.10.15 动态开点线段树下放标记没有判空节点,且上传时也没有判空节点(应当至少在其中之一判)。
  • 2025.10.15 线段树合并,需要判 \(u1,u2\) 均为空。
  • 倍增应该倒序枚举 \(k\)

抽象做法/算法理解不透彻

  • 2024.11.26 只有单点、区间加,最后才有一次询问的不需要线段树,可以直接差分前缀和。
  • 2024.12.17 使用无符号自然溢出作为因数含有 \(2\)\(10^5\) 次幂的 hash 模数。
  • 2024.12.30 fhq 平衡树合并会改变结点的儿子关系,所以找子树的最大或最小值需要先找完再和另外一棵树合并。
  • 2024.01.03 使用无符号自然溢出作为判定行列式是否为 \(0\) 的模数,一旦出现 \(2\) 的很多倍相乘,就会全部是 \(0\)
  • 2025.01.09 认为把一条边拆成两条边,计算最小生成树的时候会算到重边。
  • 2025.09.13 不知道为什么认为 bitset 位运算的时间复杂度是 \(O(\frac{n^2}{w})\) 的。
  • 2025.10.15 集合内事件至少发生一个的概率等于 \(1\) 减去集合内事件都不发生的概率。而不是往死里容斥……

这属于哪类?

  • 2025.09.27 复制文件夹时没复制到,于是提交了空的文件夹至 ftp。
posted @ 2024-08-13 21:13  wing_heart  阅读(64)  评论(0)    收藏  举报