错误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=1∑nCm+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+1−1=−1 那么输出
P
−
1
P-1
P−1
错误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][x⨁1]]>siz[t[a][x⨁1]])
写成了
i
f
(
t
[
a
]
[
x
⨁
1
]
>
t
[
a
]
[
x
⨁
1
]
)
if(t[a][x\bigoplus1]>t[a][x\bigoplus1])
if(t[a][x⨁1]>t[a][x⨁1])
和(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++); 是对的