一些常识
1. double会有精度误差,选
e
p
s
要适中
如果
e
p
s
过大显然会爆精度,如果选得过小会导致一系列神奇的问题。
当时在UOJ做去年NOIP的D2T3的时候被hack点卡精度,于是当时一个头脑发热就写出了
于是乎,就发生了美好的事情
还有一次是在某校打模拟赛,一道二分的板子题因为我eps过小就T掉了。。。
2. memset函数并不是O(1)的
RT,它贡献了我在初学点分的时候的大多数TLE
不当时一度以为我被卡常数了。。。
3. 注意模数以及数据大小
模数为1e9+7不代表中间过程不会爆int
还有就是数清楚到底有多少个0,别想都不想直接默认
10
9
+
7
以及
10
9
+
7
,
10
8
+
7
都是素数,但
10
7
+
7
=
941
×
10627
一些非技术性失误
1. 单词拼写
函数名拼错了还好,编译的时候会报错,但文件名要是拼错了那就真的GG了
2. 记得屏蔽掉调试用语
我亲眼见过一个同学的一个能AC的程序,因为没有屏蔽掉调试用的puts(“ok”),然后FST。
同样地,不该屏蔽掉的东西也不能随便屏蔽。还是在某校的另一场模拟赛,因为屏蔽掉了freopen然后一个80分的暴力直接挂掉
3. 明确变量的含义
有很长一段时间,树的题做多了之后再做一般图论问题,读图的那个循环我都会写成
for(int i=1,u,v;i<n;i++)read(u),read(v),add(u,v);
甚至有的时候
K
r
u
s
k
a
l
也会写成那样,然后就各种Debug……
4. 读入优化的负数与初始化
5. 对内存使用的正确估计
在做某数据结构的
网传
板子题的时候,因为把内存使用的上界估计小了导致数组没开够,然后各种RE。。。
6. bfs时候首元素要入队,取完之后记得pop
前半句导致我一个AC程序无限WA,后半句导致我一个AC程序又T又M
赛场上的相关事项
1. 注意时间分配,在保证有分之前千万不要死肛某一道题
2. 考完了不要对答案,不要上网交流
3. 不会做题别报复社会
去年有个同学不会做题然后写了一句
system("shutdown -f");
还好这对Linux并不管用。
最后呢还是预祝大家++rp