#
论如何将100分变为0分
1.
    
T
a
r
j
a
n
1.\;\;Tarjan
1.Tarjan 缩无向图时套用原来的写法会建
4
m
4m
4m条边。
2.
  
2.\;
2. 在离线时,不要把
a
n
s
=
=
0
ans == 0
ans==0作为比较条件。
3.
  
3.\;
3. 不要偷懒而不写函数返回值类型。
4.
  
4.\;
4. 记得取模。
5.
  
5.\;
5. 在分支比较少时尽量选择
i
f
  
e
l
s
e
if\;else
ifelse语句。
6.
  
6.\;
6.
s
t
r
u
c
t
struct
struct远比多个数组快,所以能压成
s
t
r
u
c
t
struct
struct就压。
7.
  
7.\;
7.
T
a
r
j
a
n
Tarjan
Tarjan在求割点时
s
t
a
c
k
stack
stack里存的是边。
8.
  
8.\;
8. 在
S
A
SA
SA中可以用
s
o
r
t
+
sort+
sort+把
t
u
p
l
e
tuple
tuple压成
l
o
n
g
  
l
o
n
g
long\;long
longlong来代替记排,但不要忘记
r
a
n
k
rank
rank数组尾端全都是
−
1
-1
−1。
9.
  
9.\;
9. 在遇到变量莫名其妙被修改时,绝对是越界了。你看Haskell就不会这样
10.
  
10.\;
10. 同类型变量共享成员函数内的
s
t
a
t
i
c
static
static变量。
11.
  
11.\;
11. 写线段树一定要区分右移左移(其实
define
\text{define}
define起来就没这么多事了)。
12.
  
12.\;
12. 尽量使用
i
n
t
int
int而非
l
o
n
g
  
l
o
n
g
long\;long
longlong,只需在乘式前使用
(
l
l
)
(ll)
(ll),乘式末取模即可,效率有明显提升。
13.
  
13.\;
13. 模数千万不能错。
14.
  
14.\;
14.
I
O
I
IOI
IOI赛制记得删文操。
15.
  
15.\;
15. 写莫队是区间应先扩展再收敛。
16.
  
16.\;
16. (尤其是图论题)搜索时要考虑状态是否完全联通(比如
T
a
r
j
a
n
Tarjan
Tarjan)。
17.
  
17.\;
17.
I
D
F
T
IDFT
IDFT最后要
r
e
v
e
r
s
e
(
a
+
1
,
a
+
n
)
reverse(a+1, a+n)
reverse(a+1,a+n)。
18.
  
18.\;
18. 分治
F
F
T
FFT
FFT中要使多项式相乘后的长度尽可能小(大概有一半的常数)。
19.
  
19.\;
19. 尽量不要开大小刚刚好的数组。
20.
  
20.\;
20. 当
DP
\text{DP}
DP数组本身有不止一种意义时, 注意特判。
21.
  
21.\;
21. 不要在读入多组数据使用
break
\text{break}
break,
goto
\text{goto}
goto等。
22.
  
22.\;
22.
-1>>1==-1
\text{-1>>1==-1}
-1>>1==-1。
23.
  
23.\;
23. 求区间交时记得判断左端点是否跨越右端点。