NOIP 考前小整理
考前整理一些可能用得到的东西。
仅作为整理,可能有不全或错误。
-
start on 2023.11.16
终端和 ulimit
-
upadte on 2023.11.17
增加少量 vscode 设置、弱智错误
-
update on 2023.11.20
考 NOIP 的时候试了一下,发现 vscode 的部分是错的,但没细看怎么回事,不管了。
一、终端编译
-
-std=c++14。 -
-Wall,-Wextra。会提醒一些可能写错了的地方,或者一些比较明显的 UB。比如for(___)a=___;b=___;,会告诉你循环可能漏掉了末尾;比如++x + x++,会告诉你未定义。有可能一些习惯,比如压行,会触发警告。这就需要视情况在改代码、带着一串警告编译、隔一会儿一检查里自己选择了。不建议因为这个浪费过多时间。
-
-fsanitizesanitize,净化、消除。
使用:
-fanitize=【type】或-fanitize=【type1】,【type2】例:
-fsanitize=undefined,address以下是部分常用的。
名称 用途 undefined 未定义 address 访问越界 signed-integer-overflow 有符号溢出 如果触发了会有绚丽的特效,但是也许不一定好使。当个添头,自己一定要多检查检查。
然而你如果全加上的话:
g++ a.cpp -o a -Wall -Wextra -fsanitize=undefined,address,igned-integer-overflow
反正我选择写一份存起来,在关键步骤检测一下。
二、ulimit
目前只有一小部分常用的,其余的以后再说,如果还有以后。
-
查看各项限制:
ulimit -a你可以在里面看到各项的内容、单位、缩写以及当前大小。
比如
virtual memory内存,stack size栈空间 -
更改某项限制:
ulimit -【type】 【size】例如:
ulimit -v 512000,将内存限制改为 512000KB。对于单个终端窗口,除了第一次以外,每次都只能改小而不能改大。
-
常见用法:
-
由于默认栈空间可能较小,本地测试时有可能爆栈,出现莫名其妙 RE 的情况。据本人统计,此情况一般会带来不小的影响,在比赛时可能很影响心态。
-
如果开了许东西,但不清楚是否超出限制,可以限制内存大小,如果超限会显示
段错误或者Segmentation fault之类的。注意,正常的超限是在./a之后报错,如果在g++时报错则属于下一条的问题。
-
-
一些重要的小问题
然而 ulimit 有时不能对内存进行很小的限制,这取决于你的头文件用了多少。
因为引用头文件是需要空间的,这部分空间同样受
ulimit限制,如果大小不够就会报一些错误。报错内容似乎和大小有关,这里不深研究。另外,这个空间限制并不严谨,在此给出部分本机测试结果。需要注意,这并不是准确的值,连续测试下的结果有所出入,所以一定别卡下界。
头文件 卡上界 推荐大小 cstdio50100 60000 bits/stdc++.h189600 200000 ext/pb_ds/assoc_container.hpp127590 130000 bits/extc++.h240800 250000
三、vscode
上回 CSP 的时候发现机器没有代码补全,没什么影响,但想起来了就看了看 vscode 的 C++ 插件设置。
发现有好多可以调的东西,然而感觉没太大意义,简单说一下。
-
update on 2023.11.20
考 NOIP 的时候试了一下,发现都用不了。
赛场上发现补全和红浪线都不好使,不知道怎么回事,虽然没有任何影响但是很沮丧。可既然退役了就不打算管了。
只能说不要依赖这些东西吧。有兴趣的可以去看看 CCF 发的虚拟机。
在侧栏里 Extensions -> C/C++ -> Manage(齿轮图案) -> Extension Setting,然后配置即可。default 意为默认,应该跟 enable 差不多(至少第一项补全是)。
代码补全是 Autocomplete。


自动纠错需要查找。Error Squiggles。
ctrl+T 调出顶上的框,然后将框内改为 > ,后面写要找的东西。
默认这样:

不加是搜索文件:

加了之后:

四、一些弱智错误
-
ios::sync_with_stdio(0);不能和fclose同时用!!! -
所有需要通过
e[i^1]找反边的,tot初始赋成1。 -
如果建边时
e[++tot]={v,head[u]};,那么只会赋两个值,如果有边权或者什么会为0。 -
缩点双时要判单点。
-
如果对于结构体定义了默认构造函数,需要注意全局变量的初值。
-
网络流注意点数不一定是
n。我选择单开V,E。 -
树上路径长度看好是边数还是点数。
-
并查集初始化
tag[i]=i,别不写,也别写成tag[i]=1。

浙公网安备 33010602011771号