前言
今年(2021年),CCF发布了NOI Linux 2.0以及关于NOI系列活动中编程语言使用限制的补充说明,将NOI系列比赛的标准进行了改动。
NOI Linux 2.0
- 以下内容较水,可直接跳到下一节——int128。
从九月一日开始,NOI Linux 2.0正式替代了旧版的NOI Linux,然而作为SD参赛选手并没有机会使用……
但是我们也应该感到侥幸,因为NOI Linux 2.0并没有提供一个很方便的IDE。
不过我还是装了个虚拟机感受了一下:
是纯英文的,看不大很懂,自己瞎搞。感觉不大好,可能是虚拟机的问题。
这里给出CCF提供的壁纸,都是原图,直接从NOI Linux里拿出来的。
图片有点大,可能会卡。
初始壁纸:
CCF提供的一些全网征集的壁纸:
还有一些偏娱乐性质的壁纸:
可以在Settings(设置)中找到这些壁纸并且切换。
似乎效果不错,很有感觉,设计者确实用心了,不知道CCF给没给稿费:
浏览器是Firefox:
软件:
可以看到提供了VS,然而CCF只提供了在线插件,VS似乎只能用作文本编辑了。
由于SD选手仍然使用windows 7/10,这里不再阐述NOI Linux 2.0的具体使用方法。
int128
评测系统是64位的,这意味着,我们可以使用
int128
\text{int128}
int128!
有符号 int128 \text{int128} int128 表示的范围为 [ − 2 127 , 2 127 − 1 ] [-2^{127},2^{127}-1] [−2127,2127−1],无符号 int128 \text{int128} int128 的范围为 [ 0 , 2 128 − 1 ] [0,2^{128}-1] [0,2128−1]。
int128 \text{int128} int128 的声明与 int \text{int} int、 long long \text{long long} long long 等类型相同:
__int128 x;//有符号
__uint128_t y;//无符号
int128 \text{int128} int128 的运算与 int \text{int} int、 long long \text{long long} long long 等也相同。
使用
int128
\text{int128}
int128 时唯一需要特别注意的一点是,cin/cout
以及 scanf/printf
无法读写
int128
\text{int128}
int128,我们只能使用自己编写的读写(即快读和快写),这里提供一个
简单好记的模板:
__int128 qread()
{
__int128 s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void print(__int128 s)
{
if(s<0)
{
putchar('-');
s=-s;
}
if(s>9)
print(s/10);
putchar(s%10+'0');
}
另外,我不确定在SD垃圾的本机环境下能否编译 int128 \text{int128} int128,建议试机时尝试一下,如果不能编译,这里给出一个有效的方法:使用 long long \text{long long} long long 编写程序以及读写,确定无误后把 long long \text{long long} long long 全部替换为 int128 \text{int128} int128。
其他
- 可以使用下划线开头的函数
- 可以使用pb_ds
- 不能使用
gets()
register
无效- 使用万能头注意变量和函数名