#edu001. NOI2023陕西省选考前培训

NOI2023陕西省选考前培训

1.考试时间

4月1日、2日 8:30-13:00,提前50分钟到达考点(7:40)。

2.考试地点

西安交通大学附属中学(西安市雁翔路99号)

3.携带物品

准考证、身份证、笔、水和食物等其他物品。

考试时间比较长,要吃早点(但不建议吃太饱,太饱容易瞌睡),带上补充能量的食物,比如士力架或其他吃起来方便没有味道的食物。根据自己情况考虑是否需要咖啡,可以备上。

4.机器环境

硬件:Intel i5-4590 CPU @3.30GHz 3.30GHz + 8G RAM

系统:Windows 7专业版64位 + VMvare-NoiLinux

虚拟机:VMvare :内存2G+1核+60GB硬盘

5.编写程序和编译

3月31日早上我和代老师去测了机器,重要信息如下:

  1. 建议在Windows下编写/编译程序,交大机房Windows下有DevC++、Sublime。
  2. Windows下编写/编译完的程序,Windows下测试文件读写、时间,包括对拍。之后再把文件直接复制粘贴(Ctrl+C、Ctrl+V)到VMvare虚拟机下再测试,防止CE/RE等低级错误。 (Windows你更熟悉,虚拟机偶尔会卡顿,不建议直接到虚拟机里编写测试程序)
  3. 最终是在Windows下提交的考生文件夹,同春季测试要求。
  4. 注意听监考老师告知那个盘没有还原,考试文件见程序最终要放到哪里?(据说是E盘)

6.VMvare+NOILinux使用要点

开启VMvare后,noiLinux下一些常见重要命令

打开终端:ctrl+alt+t 或右键

一些常见命令(详细见代老师教程:NOI Linux 2 及虚拟机使用技巧 | 33Wiki (33dai.cn))

  • <tab>:当你想要再终端下敲击某个文件名或路径时,tab 键可以自动联想。
    • 如果当前文件夹下只有三个文件:“abcde.cpp,abccd.cpp,abcee.cpp
    • a<tab>:会自动补全为 abc
    • abcc<tab>:会自动补全为 abccd.cpp
  • ls:即 list,可以显示当前目录下的文件
    • ls -l:以列表模式显示每个文件
    • ls -a:显示所有文件(包括隐藏的文件夹和文件)
    • ls -al:以列表模式显示所有文件(包括隐藏的文件夹和文件)
  • cd:即 change directory,可以改变当前所在的目录。
    • cd a:跳转到当前文件夹下的名称为 a 的子文件夹
    • cd ..:跳转到上一级文件夹
    • cd .:跳转到当前文件夹,啥用没有
    • cd /home/noi/Desktop:跳转到用户 noi 的桌面文件夹
    • cd ~:跳转到当前用户的主文件夹
  • pwd:即 print working directory,显示完整的当前路径
  • mkdir: 即 make directory,创建一个文件夹
    • mkdir a:在当前文件夹下创建了一个名称为 a 的子文件夹
    • mkdir ~/Desktop/a:在当前用户的主文件夹下的 Desktop 文件夹里创建了一个名称为 a 的子文件夹。
    • mkdir /home/noi/Desktop/a:上一个命令的完整版本。
  • touch:新建文件
    • touch a:新建一个名称为 a 的空文件
    • touch /xxx/xxx/a:在某个指定路径下创建一个名称为 a 的空文件。
  • sudo 命令:即 super user do,使用最高管理员权限(root权限)运行后面的命令,一般在安装软件、更新系统等操作时会用到,比赛时一般用不到(也不建议在比赛时使用,sudo 可以做任何事,包括删除整个操作系统,因此造成的时间损失一般不会赔偿的)。
  • rm:即 remove,删除命令。
    • rm a:删除文件 a
    • rm -f a:删除文件 a,无需确认。
    • rm -r a:递归地删除文件夹 a 及其子文件夹。
    • sudo rm -rf /:目前你应该能读懂这个命令了,这表示用最高权限去删除整个根目录。运行完后操作系统会开始递归地删除所有文件。在这写这个命令不是为了让你去运行,而是由此提醒,新手阶段尽量不要去用终端命令删除文件,有时敲错一点点内容就会酿成大祸。
  • cp:即 copy,复制命令。
    • cp a b:复制一份当前目录下的 a 文件到当前目录,新文件名为 bab 都可以写带路径的文件,比如 cp /home/noi/a /home/noi/Desktop/b
    • cp -r a b:复制一份当前目录下的 a 文件夹到当前目录,新文件夹名为 bab 都可以写完整路径的。
  • cat:用来显示某个文本的内容
    • cat aplusb.cpp:显示 aplusb.cpp 的内容。
  • clear:清空终端前面的内容
  • diff:检测两个文件的区别,类似 Windows 下的 fc
    • diff 1.out 1.ans:检测 1.out1.ans 的区别。
  • time:运行程序前加上这个可以测速
    • time ./aplusb.exe:运行 ./aplusb.exe 并测速。
  • 方向键上/下:翻找之前运行的命令。

使用终端编译程序

编译程序:g++ a.cpp -o a -O2 -std=c++14 -Wall

  • -o :修改生成文件的名字
  • -O2:开启O2优化
  • -Wall: 开启所有警告

必要情况下,修改栈空间ulimit -s 1048576

(ulimit -s unlimited不限制栈空间)

(linux 修改栈空间方式 与Windows 不同,不能添加到 “g++ ”)

1)查看linux默认栈空间的大小
     通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下为8192 KB 即8M。

(2)临时改变栈空间的大小
        通过命令 ulimit -s 设置大小值临时改变栈空间大小。例如:ulimit -s 1048576,即修改为1 GB。

(3)永久修改栈空间大大小。有两种方法:
        方法一:可以在/etc/rc.local 内加入 ulimit -s 1048576 则可以开机就设置栈空间大小,任何用户启动的时候都会调用。
        方法二:修改配置文件/etc/security/limits.conf

运行程序: ./a

测试运行时间:time ./a

关于程序运行时间

交大Windows下的速度大约是CCF标准评测的1.2-1.5倍,虚拟机下的速度会更慢,详细可以参考代老师的文档。

学习完毕

{{ select(1) }}

  • YES
  • NO