#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日早上我和代老师去测了机器,重要信息如下:
- 建议在Windows下编写/编译程序,交大机房Windows下有DevC++、Sublime。
- Windows下编写/编译完的程序,Windows下测试文件读写、时间,包括对拍。之后再把文件直接复制粘贴(Ctrl+C、Ctrl+V)到VMvare虚拟机下再测试,防止CE/RE等低级错误。 (Windows你更熟悉,虚拟机偶尔会卡顿,不建议直接到虚拟机里编写测试程序)
- 最终是在Windows下提交的考生文件夹,同春季测试要求。
- 注意听监考老师告知那个盘没有还原,考试文件见程序最终要放到哪里?(据说是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
文件到当前目录,新文件名为b
。a
和b
都可以写带路径的文件,比如cp /home/noi/a /home/noi/Desktop/b
。cp -r a b
:复制一份当前目录下的a
文件夹到当前目录,新文件夹名为b
。a
和b
都可以写完整路径的。
cat
:用来显示某个文本的内容cat aplusb.cpp
:显示aplusb.cpp
的内容。
clear
:清空终端前面的内容diff
:检测两个文件的区别,类似 Windows 下的fc
diff 1.out 1.ans
:检测1.out
与1.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