以梦为马,不负韶华——CSP2019考前提醒

览遍千秋

2019-11-14 23:40:50

Personal

# 江苏技术环境改动较大,本文已不具有参考意义。 ## -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 ```