以梦为马,不负韶华——CSP2019考前提醒
览遍千秋
2019-11-14 23:40:50
# 江苏技术环境改动较大,本文已不具有参考意义。
## -1 2020年更新:江苏省特派员、技术、专家与各地市领队、指导教师会议精神(CSP)
提供 NOI Linux 虚拟机与 Windows 平台,Windows 下提供 Dev-C++ 4.8 版本。
D:\submit 与虚拟机为共享文件夹, D 盘不还原。
选手需在 submit 文件夹下建立选手文件夹,命名规则:机位号准考证号,比如本人的:5C-025JS-00263. 选手源文件直接存放在该文件夹的根目录下,不得建立子文件夹。
竞赛结束前 $10$ 分钟,根据主监考指令,核对源文件文件名、输入输出文件名,记录源文件字节数。
竞赛结束时,根据主监考指令,全体起立并背对机器站立,等待程序自动回收,回收完成后,依次签字确认。
待签字环节结束后,在各市群内有 $10-15$ 分钟确认程序没丢的时间,如果该时间段内特派员未收到来自各市领队的异议,将提交 CCF。
由于某种原因,南京航空航天大学食堂不对选手开放,选手进入南航需要刷身份证,提高组选手在 12:30 后方可进入学校。
---
## 零·写在前面
作者是一个江苏高一萌新,初中参加过三次普及组复赛,还是略有一些经验的。
将三年的经验与教训写在这里,仅供大家参考,有不同想法的地方可以再交流商讨。
本文主要针对的是普通选手,不是国集选手这样的神仙。
---
## 壹·必须学会的一些 $\mathrm{Linux}$ 操作
这就必须要说到笔者 $\mathrm{NOIP2016}$ 复赛了,在 $\mathrm{NOIP2016}$ 时,笔者初一,由于一些玄学的系统差异问题,导致了笔者4个编译错误,从260->0.
江苏省一直是提供 Windows 作为主系统,在 Windows 下为选手提供 NOI Linux 虚拟机。
以下是一些终端常用命令:
`l` 显示当前所在目录下的文件和子目录
![](https://cdn.luogu.com.cn/upload/image_hosting/i149duqx.png)
`cd xxx` 切换到当前目录下 `xxx` 子目录
`cd ..` 返回上级目录,注意 `cd` 和 `..` 之间有个空格
![](https://cdn.luogu.com.cn/upload/image_hosting/vbqkdy95.png)
`g++ -o test test.cpp -lm` 试卷中提供的编译命令,但是建议加上 `-Wall` 选项,以显示全部警告信息:`g++ -o test test.cpp -lm -Wall`
![](https://cdn.luogu.com.cn/upload/image_hosting/w0zf7kau.png)
`./test` 运行程序
![](https://cdn.luogu.com.cn/upload/image_hosting/80qk0f0h.png)
**建议提供了Windows环境的省份的同学,在Windows下编程,到Linux下编译和测样例,在Linux下编译前,一定要先做好备份,否则一旦输错编译命令,可能造成不可逆后果,如丢失源代码。**
upd-2020-11-5 更新了两张图片
---
## 贰·时间分配与心态调试
开场前先提前调整好分辨率、编译器字体字号到习惯的程度。打一个 A+B problem 确认 IDE 没有问题。
众所周知,$\mathrm{NOIP2018}$ PJT3摆渡车是一个比较难的题目。(神仙别D我),但是 T4对称二叉树拿分则比较容易,此时一定要根据自己的实际情况,分配这两题的时间。
仔细读题,理解提议后方可写题。前两题一定要仔细阅读题面,不要错过细节。合理使用草稿纸
心态调试方面,主要是对于提高组选手。
由于作者是第一次参加提高组,没有什么经验,但是从往届学长的总结来看,$\mathrm{Day1}$ 考完之后就当自己 AK 了,千万不要去想自己有没有可能挂分。
对于后面的题目,无论怎么样先去完成部分分,完成尽可能多的子任务。然后再考虑满分解法。
**不建议在考完全部之前测任何民间数据进行估分**
而当 $\mathrm{Day1}$ 遇到像 $\mathrm{NOIP2016-Day1}$ 一样毒瘤的卷子的时候,不要慌张,发现T2明显不可做(明示如何判断部分分类的时候),一定求稳,先拿稳部分分。
最好学习一下 `namespace` 的 $\mathrm{Subtask}$ 写法。
~~考场上如果没思路,建议多往厕所跑跑,厕所是一个很奇怪的地方,时常能在厕所获得灵感(雾)~~
---
## 叁·一些注意点
身份证身份证身份证!
准考证准考证准考证!
吃好早餐,少喝点水。可以带水进去。
`int*int`乘法强转 `long long`!
不要开太大的数组,小心MLE(可以提前计算)。
减少不必要的优化,以降低思维难度、减少代码量和出错为目标。
`next,x0,x1,y0,y1,index` 别作变量名!
`long long` 用 `%lld`
注意longlong级别的inf要开0x3f3f3f3f3f3f3f3fll
longlong级别状压左移写1ll
遇到字符串尽可能到 $Linux$ 测样例!
比赛结束前10分钟就放弃治疗吧,别希望能绝杀。再三检查有没有去掉调试语句、是否能通过编译,文件输入输出是否正确,文件名和建立文件夹是否正确。
别踢电源线!
不会的时候大胆写暴力,`random_shuffle` 碾压标算,有时一些不起眼的小优化可能会使分数暴涨。
---
## 肆·对拍
为了防止挂分,建议对拍,即用暴力和要提交的程序进行互相检测。
建议不会写数据生成器的同学恶补一下。
这里提供一种用 C++ 写的 Windows 对拍脚本,可以参考一下。
其中 `data.exe`是数据生成器,`std.exe`是暴力,`test.exe`是要测的程序。
`test.out` 是要测的程序的输出文件,`test.ans`是暴力的输出文件。
```cpp
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int cas;
int main(){
while(1){
++cas;Sleep(50);
system("data.exe");
system("std.exe");
syetem("test.exe");
printf("-----------Test Case %d----------\n",cas);
if(system("fc test.out test.ans")) system("pause");
}
}
```
## 祝大家 $rp++$
---
附赠 Vim 配置文件
```cpp
set nu
" set mu
set ruler
color torte
set tabstop=4
set shiftwidth=4
set autoindent
set cindent
set mouse=a
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {<CR>}<ESC>O
```