为什么要用 NOI Linux 2.0?先看下面这段代码:
#include <bits/stdc++.h>
using namespace std;
int y1 = 10, next = 100;
int main() {
cout << y1 << endl;
return 0;
}
在 Windows 系统上,这段代码可以正常编译运行,但是在 NOI Linux 2.0(也就是 NOI 系列赛事评测环境中)上,使用 g++ a.cpp -o a -O2 -std=c++14 -static -Wall
进行编译,这段代码将会编译错误,提示 y1
和 next
这两个标识符在别的地方已经被定义过了。如果不使用 std
命名空间,或者使用低版本的编译参数,或者把这几个变量放到局部去定义,就不会出现这个问题。
于是我们可以有一个直观体验,如果本地用的是 Windows 的话,可能交上去的代码因为奇妙的原因无法通过编译,从而爆零。因此,我们要学习在本地使用 NOI Linux,从而减少这种非智力丢分。
由于我并没有打过 OI,这是第一次或许有机会参加,所以还是要稍微学习一下怎么用这些东西。
在终端下输入 ulimit -s <num>
可以将栈空间更改为 num
KB(如 ulimit -s 262144
可以将栈空间改为 256 MB),ulimit -s unlimited
可以将栈空间改为无限制。ulimit -a
可以查看各项资源的限制情况。
注意,除了栈空间之外,评测的时候是有总空间限制的,但是我们运行的时候并没有指定空间限制,所以一些情况下我们可能因为空间开大了而导致 MLE,而 MLE = 0 分!。平时做题的时候我们事实上很少关注空间是否开爆了,且一般来说也不会爆,等到了场上可能会忽视这一点。
NOI Linux 2.0 上疑似没有中文输入法,这对善于写注释做题的我来说影响很大,所以应该最近开始熟悉多用草稿纸去做题。
参考文献: