|
OI比赛经验
2021年评测系统改成最新版noilinux,经过实测,G++版本从4.8升级到了9.3, 所以请尽量使用noilinux系统,具体配置见https://www.noi.cn/gynoi/jsgz/2021-07-16/732450.shtml
比如使用gets在最新的g++编译器中会产生编译错误,如果需要读入一行字符串,可以使用string s; getline(cin, s);
发下来的东西不是给你吃的,是给AK的人吃的,饿了就吃巧克力
windows下一定要注意设置文件夹选项,显示扩展名
考试过程中D盘一般不清空, 有些省份可能是其他盘,以你具体情况而定,一般主办方会讲, 下面就以D盘为例(代表不清空的盘)
请尽量在D盘下写代码,以防止断电重启等不可抗力因素
D盘下有一个以你考号命名的考生文件夹下, 比如浙江的一般是 ZJ-xxxx, 在这个目录下, 你需要
新建三个子目录, 子目录的名字是三个题目的文件名, 这个文件名会在下发的题面PDF里面给出
在每个子目录下新建三个同名的后缀名为cpp的文件,如果是pascal选手就是pas后缀名. 这个文件就是你的源程序
在每个源程序中, 你需要加入文件操作, 下面是例子, 在离开考场前一定要反复检查目录结构, 文件夹名字, 文件名字以及是否加了文件操作
[C++] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
int main()
{
// 最终提交的程序一定要有下面这两行代码, 并且保存成candy.cpp, candy是具体题目的文件名, 你应该替换成考场上对应题目要求的名字, 大小写敏感(一般是小写)
freopen("candy.in", "r", stdin);
freopen("candy.out", "w", stdout);
return 0;
}
- 不要define int long long, 可以把int的变量开在一起, long long的变量开在一起, 否则,数据量大的题很容易TLE
- 多组数据尽量使用while (scanf("%d%d",&a,&b) == 2 ) 的形式, 此方法会确保读入的数符合你的类型定义, 即便后台数据文件末尾出错了也不至于让程序崩溃
- 数据要读入完全, 不要中途return 0
- 主函数确保return 0; 采用下面的框架写程序, 多余的头文件不要写, 就一个bits
[C++] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
int main()
{
return 0;
}
- 考试结束前把要提交的程序测一遍所有的样例以及手造数据, 确认无误再放到相应文件夹内, 检查是否有多余调试信息
- 改动一个程序后, 一定要将所有数据测试一遍, 确保改动不会导致更低的分.
- 检查数组大小, 是否可能会出现RE或者MLE的情况
- 多组数据一定要多次跑数据, 检查是否有清空
- 测样例的时候仔细对比,字母大小写都要看清楚
- 多组数据清空的时候不要用memset, 需要清空多少,清空多少, 要与输入同阶
- 每个题手造6-10组小数据, 手动检测暴力程序的正确性, 避免出现0分的情况
- 测数据的时候题目中的上下范围极限的数据要测到, 注意windows下dfs层数特别大的时候可能会本地爆栈, 不必惊慌, linux下可以采用命令行手动加栈的方法,比如ulimit -s 51200(linux用户一定要自己手动测试过)
- 因为OI比赛无法提交, 因此写完一个程序要立刻把暴力程序打掉, 放在一边对拍, 去做下一题
- 开场的时候思考超过5分钟一点想法都没有的题果断打暴力跳过. 等写完其他题再回来.
- 数据范围一定要仔细看,往往有些特殊的数据范围就是题目的突破口
- 现场赛的代码尽量结构化, 一个函数完成一件事情, 方便后期调试, 每个函数不要过长.
- 比赛的时候发的食物尽量不要吃, 以免吃完困顿, 饿了可以吃点巧克力之类的食物
- 参赛前一天九点就可以上床准备睡觉
- 开敲一个题之前估计好时间, 误差不要超过5分钟, 在考前的训练中有意识的强化这一点
输入输出尽量使用 scanf printf
为了防止devcpp崩溃的现象, 你需要学会命令行操作.
比赛结束前半小时开始检查,每一个文件夹都要仔仔细细检查过去
|
|