NOIP上机测试注意事项

由于近期模拟题原地**次数较多,故写一篇警示文

 

1,头文件

1.1正式比赛中,反正我不敢用bits/stdc++.h。

1.2正式比赛中,建议打出以下十个库

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<vector>
 6 #include<algorithm>
 7 #include<set>
 8 #include<map>
 9 #include<queue>
10 #include<bitset>
11 #include<stack>

 

2,宏定义

2.1  #define通常用于定义最大值,模值数值

2.2  通过宏定义的函数,一定要注意是否需要加括号(宁可多加不要少加)

 

3,数据范围

3.1  需要特别注意程序运算过程,最后输出环节中数据规模是否会大于int,是否会大于long long,如大于int,建议采用全局long long(修改建议用IDE的find实现)

3.2  需要特别注意程序运算过程中的取模环节,在不卡常的情况下,可以打多几个,以防止爆long long/int 

3.3  一定要看好数据范围,不能开少(例如:有向边/无向边,线段树空间*4,可持久化线段树空间*log(n)),开够后用极限数据+本地O2进行爆空间检测。

 

4,输入输出

4.1  一定要看好文件的输入/输出名称,绝对不可打错!!!

4.2  输入输出,在数据范围不大时用cin,否则用scanf,使用scanf时需要特别注意数据类型为int/long long,防止出锅(linux&win7+均为%lld)

4.3  除非迫不得已,不要使用读入优化

 

5,线段树/splay相关

5.1 线段树,splay等要先进行肉眼调错,降低调试工作量

5.2 能用线段树/树状数组,不要用splay,减轻工作量

5.3 splay每完成一次操作,记得调用splay操作

5.4 线段树/splay每完成一次操作,记得调用pushup(如果需要的话)

 

6,对拍相关

6.1 对拍bat务必检查是否调用了makedata

6.2 对拍需要尽可能尝试多种构造数据(例如:一条链/扫把树,全是某些数,递增/递减序列)

6.3 务必需检查好两个对拍文件的文件名,绝对不可以将暴力交上去

6.4 不要尝试调试拍出错的大数据!

 

7,其它注意事项

7.1 使用结构体时,注意构造函数内的初始化

7.2 使用memset时,请注意_len大小,不要尝试对一个指针求sizeof

7.3 有细节部分时,先想清楚,在纸上写好,再开始打

7.4 思考要全面,贪心算法等要尽可能地构造反例!!

7.5 在定义MAX时,要考虑最坏情况,必须大于正常可构造的最大情况。

7.6 注意树剖/并查集合并siz/dep时的符号方向!

 

(暂时想了这么多,又想到我会来补充)

posted @ 2018-10-06 09:46  AlphaInf  阅读(958)  评论(7编辑  收藏  举报