常犯错误汇总

错误1.写函数的时候结尾没有写return
=-= 正解:return 内容(!手动高亮)

错误2.freopen内容打错 多加空格 复制粘贴的时候没把in改成out;

错误3.变量写错
包括但不只包括排序时用错变量;
函数中用错变量;
遍历时用错变量;

错误4.多个while套用时边界判断不准确

错误5.vector写顺手后 写邻接表数组忘了开两倍

错误6.不读题 存对顺序有要求的内容时凭印象存

错误7.多重背包转二进制时没有判断是否存在恰好情况
导致一些出现-1 0的物品

错误8.图论 有向图 无向图 建反建错 不读题

错误9 else中的内容忘记拿括号扩

错误10 对于一个string 类型的变量x和一个char类型的y
x=x+y比起x+=y会浪费大量时间

错误11 对于并查集 拓展域问题 假设原点是x y fa是xx yy
那么拓展域连接时 最好是 f a [ g e t f ( x + n ) ] = y y fa[getf(x+n)]=yy fa[getf(x+n)]=yy f a [ g e t f ( x + n ) ] = y y fa[getf(x+n)]=yy fa[getf(x+n)]=yy
写成 f a [ g e t f ( x x + n ) ] = x x fa[getf(xx+n)]=xx fa[getf(xx+n)]=xx 好像有些时候会错?

错误12 组合数学 C 0 0 = 1 C_0^0=1 C00=1 而不是0!!!

错误13 组合数学
对于式子 ∑ i = 1 n C m + i m \sum \limits_{i=1}^{n} C_{m+i}^m i=1nCm+im 可以加上一个 C m + 1 m + 1 C^{m+1}_{m+1} Cm+1m+1(也就是1)然后合并化简:
C m + 1 m + 1 + C m + 1 m = C m + 2 m + 1 C^{m+1}_{m+1}+C^{m}_{m+1}=C^{m+1}_{m+2} Cm+1m+1+Cm+1m=Cm+2m+1 依次合并就得到 C m + n + 1 m + 1 C_{m+n+1}^{m+1} Cm+n+1m+1 然后再将该答案-1即可
但问题在于 在 m o d mod mod P P P的情况下 C m + n + 1 m + 1 C_{m+n+1}^{m+1} Cm+n+1m+1可能等于 P P P 因此应该特判 若 C m + n + 1 m + 1 − 1 = − 1 C_{m+n+1}^{m+1}-1=-1 Cm+n+1m+11=1 那么输出 P − 1 P-1 P1

错误14
有向图的点度和连通性,在题目没有给出的时候,不要认为是连通图,可能会有部分联通或者孤立点的情况,所以就可能出现0度点。

错误15
c++里的 1 1 1 默认是int类型 所以在30位以上的位运算 记得写 1 l l 1ll 1ll

错误16
函数 ( x , + + x , x ) (x,++x,x) (x,++x,x),假设x的初值是1,那么传入的参数是 2 , 2 , 2 2,2,2 2,2,2

函数 ( x , x + + , x ) (x,x++,x) (x,x++,x),假设x的初值是1,那么传入的参数是 2 , 1 , 2 2,1,2 2,1,2

错误17
数组的find()的复杂度是线性的
set的是log的

错误18
并查集按秩合并
应该是 i f ( s i z [ a ] > s i z [ b ] ) s w a p ( a , b ) if(siz[a]>siz[b]) swap(a,b) if(siz[a]>siz[b])swap(a,b)
写成了 i f ( a > b ) s w a p ( a , b ) if(a>b) swap(a,b) if(a>b)swap(a,b)

错误19
分治算法,确定左右划分后忘了给原数组复制一遍(火星商店)

错误20
可持久化trie
应该是 i f ( s i z [ t [ a ] [ x ⨁ 1 ] ] > s i z [ t [ a ] [ x ⨁ 1 ] ] ) if(siz[t[a][x\bigoplus1]]>siz[t[a][x\bigoplus1]]) if(siz[t[a][x1]]>siz[t[a][x1]])
写成了 i f ( t [ a ] [ x ⨁ 1 ] > t [ a ] [ x ⨁ 1 ] ) if(t[a][x\bigoplus1]>t[a][x\bigoplus1]) if(t[a][x1]>t[a][x1])
和(18对照 ,属于梅开二度了)

错误21
矩阵求逆的时候
假设 A , g A,g A,g 分别是原矩阵,单位矩阵(用来辅助求逆)
对应的操作要先对 g g g 操作 再对 A A A操作 要不系数就没了…
以及
比如第 i i i 行- 第 j j j
那么对于 g g g 来说,系数应该和A保持一致而不是用 g g g 里的系数
具体来说:
在这里插入图片描述
这样是对的

错误的有:
在这里插入图片描述
在这里插入图片描述
(因为发生的行列变化是第 i i i 行- f [ i ] [ c ] f[i][c] f[i][c]*第 c c c 行才对)

错误22 或者说是值得注意的地方
set的迭代器在erase后 会失效

所以要在erase前 先取下一个迭代器

也就是 erase(t); t++; 是错的

erase(t++); 是对的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值