CSP-S 第二轮,选手小 C 走进 NOI Linux 机房。桌上没有熟悉的 Dev-C++,只有一块黑底白字的终端。老师宣布:"比赛目录 3 分钟后开放,请自行在自己的主目录下建立题目文件夹。"
小 C 敲下 dir —— 屏幕回了一行 command not found;再敲 cd D:\比赛 —— 还是报错。
隔壁的小 D 不慌不忙敲了四条命令:mkdir -p ~/noi2024/day1、cd ~/noi2024/day1、pwd、ls。写代码时他习惯性加了 -Wall,编译警告立刻提示"变量 ans 未初始化",他顺手补了个 0。
两小时后,小 C 的代码因为数组开小而 RE,更致命的是他中途把 code.cpp 改坏了想回退,却发现没有任何备份,只能凭记忆重打一遍。而小 D 每次改动前都执行 cp code.cpp code.bak,一条 diff 就能看清改了什么。
差距不在算法,而在"会不会和操作系统打交道"。
💡 为什么提高组必须先学命令行
其一,比赛环境就是 Linux。NOI 系列全部在 NOI Linux 下作答与评测。你在 Windows 上越顺手,到考场的"翻译"成本越高:没有图形 IDE、没有右键菜单。
其二,命令行的可重复性极强。一天要建十几个目录、编译几十次、对拍上百组数据。把这串动作写成命令或脚本,省下的时间可以全部投入到思考题目上。
其三,命令行是透明的。图形界面隐藏了文件在哪、程序收到了什么输入;./a.out < in.txt 把输入输出摊在你眼前,调试效率完全不同。
本讲目标很具体:让你能独立完成"建目录、写文件、查文件、备份、批量编译、找线索"这六件事。