关于系统

首先 NOI Linux 2.0 于 2021年9月1日 正式启用 NOI Linux 2.0发布,将于9月1日起正式启用!阉割版 Ubuntu 20.04.1(话说正经的 Ubuntu20 是 Ubuntu 20.04.03 LTS)

下载: NOI Linux 2.0版 大概 3.4GB 。 注意 安装系统时请断开网络 (不然会自动更新一些软件,导致与实际比赛时不同)

软件简表:

类别 软件/模块 版本 备注说明
系统 Kernel 5.4.0-42-generic 64位
语言环境 GCC 9.3.0 C编译器
G++ 9.3.0 C++编译器
FPC 3.0.4 Pascal编译器
Python 2.7 非竞赛语言
3.8 非竞赛语言
调试工具 GDB 9.1
DDD 3.3.12
集成开发环境 Code::Blocks 20.03 C/C++集成开发环境
Lazarus 2.0.6 Pascal集成开发环境
Geany 1.36 C/C++/Pascal(轻量级)集成开发环境
文本编辑工具 VS Code 1.54.3
Emacs 26.3
Gedit 3.36.2
Vim 8.1
Joe 4.6
nano 4.8
sublime text 3.2.2
其他软件 Firefox 79.0 网页浏览器
Midnight Commander (mc) 4.8.24 终端
XTerm (UXTerm) 3.5.3 终端
Arbiter-local 1.02 程序评测工具单机版

值得注意的是:

  • 有 VS Code,装了一个 不全 的 C++ 插件, 没有中文包 ,还装了 python 插件(不知道想干啥)。 (upd: 事实证明这个插件等于没装,没有代码补全、C++调试,甚至连最基本的补全都被整没了 ,你最好 禁用该插件 ,以获得较为正常的 vscode 体验)
  • G++ 版本很高,g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 默认编译是 -std=c++14,不过没事现在评测也是 C++14 了。
  • GDB 版本也挺高的,GNU gdb (Ubuntu 9.1-0ubuntu1~20.04) 9.1 应该是好事。

Vscode

Ctrl+, 打开设置。

  • Text Editor > Cursor Blinking: expand
  • Text Editor > Cursor Smooth Caret Animation: true
  • Text Editor > Font Family: monospace
  • Text Editor > Font Size: 16
  • Test Editor > Smooth Scrolling: true
1
2
3
4
5
6
7
8
{
"workbench.colorTheme": "Solarized Dark",
"editor.fontFamily": "'monospace', 'Ubuntu Mono', 'Droid Sans Fallback'",
"editor.fontSize": 16,
"editor.cursorSmoothCaretAnimation": true,
"editor.cursorBlinking": "expand",
"editor.smoothScrolling": true,
}

Ctrl+K Ctrl+T 改主题

一些有用的快捷键:

  • 编辑:

    • Ctrl+CCtrl+XCtrl+VCtrl+ZCtrl+Y 复制、剪切、粘贴、回撤、恢复
    • Ctrl+U 光标回撤
    • Ctrl+FCtrl+H 搜索、替换
    • Ctrl+/ 行注释
    • F2 改名 (由于插件挂了,用不了)
  • 选择:

    • Ctrl+D 选择相同字段
    • Ctrl+L 选择行
    • Ctrl+Shift+K 删除行
    • Alt+UpAlt+Down 向上移行、向下移行
    • Ctrl+EnterCtrl+Shift+Enter 行中向下换行、行中向上换行
  • 查看:

    • Ctrl+` 打开/隐藏 终端
    • Ctrl+B 打开/隐藏 侧边栏
    • F12 转到定义 (由于插件挂了,用不了)
    • Shift+F12 参看所有引用 (由于插件挂了,用不了)
  • 命令面板, Ctrl+Shift+P 打开面板,
    注意最左边的字符:

    • 无: 搜索文件
    • > 搜索命令
    • :a,b 转到 a 行 b 列
    • @ 转到函数、全局变量

编译

编译参数:

1
g++ a.cpp -o a -Wall -Wextra -Wshadow -fsanitize=undefined -g3
  • -Wall 显示警告
  • -Wextra 显示更多警告
  • -Wshadow 若局部变量与全局变量重名,显示警告
  • -fsanitize=undefined 开启未定义行为检测(运行速度会变慢,测速时关掉)
  • -g3 生成调试信息,3 表示生成最大限度的调试信息(包括宏定义)

Vscode 没有一键编译,我们写个脚本 R.sh

1
2
3
#!/usr/bin/bash
export CPPFLAGS='-Wall -Wextra -Wshadow -std=c++14 -fsanitize=undefined -g3'
make "$1" >&2 && echo '========== run ==========' >&2 && time "./$1"
  1. 将该文件建在主目录下,即 ~/R.sh

  2. 加可执行权限

    1
    chmod +x ~/R.sh
  3. 编辑 ~/.bashrc 添加快捷命令,在结尾加上一句:

    1
    alias R='~/R.sh'
  4. 重新打开终端,若要编译 hello.cpp,先到对应目录,然后

    1
    R hello

    in.txt 输入,输出到 out.txt,可以:

    1
    R hello < in.txt > out.txt