如果你没到国赛级别的话,那一般考试环境就是Windows环境,用DevC++。至少山东是这样。不过评测时原则上都是用的NOI Linux(当然我也不能看到它真的评测时是什么样的)。
编译器是GCC 9.3.0,版本是C++14,默认开启O2优化。具体的编译选项可以在考场上的题面那个pdf的第一页看到。
如果你在练习时把版本锁到C++14应该是没有问题的。
我并不太清楚MSVC和GCC的具体区别,我就说几个可能不在标准内的东西:
根据最新规定(
https://www.noi.cn/xw/2021-09-01/735729.shtml ),你可以使用以下划线开头的库函数或宏,包括但不限于__builtin,__int128,__uint128_t,还有bits文件夹、ext文件夹、tr1和tr2等文件夹下的内容。
这个文件(
https://www.noi.cn/gynoi/tlgd/2011-04-14/710432.shtml)里注明了不能使用的范围,不过你需要结合上面那个19年的更新版本看一下。
我上面列出的都是我自己用过或者别人用过,确认不会出现问题的内容。至于#pragma,内联汇编,还有immintrin.h这样的指令集我不知道它能不能用,不过CCF并没有明令禁止。
一般赛场上Dev C++ 使用的编译器是TDM GCC 4.9.2(好像我也见过有用5.1.0的),但是无论是哪种版本,你都应该能够在赛场上使用C++14(至少是C++11)。这一点你可以在工具里-编译选项里加一个-std=c++14解决(如果报错就用c++11)。
另外为了避免未知的错误,比如说你写出来UB之类的问题,建议把警告都拉满,-Wall,-Wextra,-Wformat什么的全加上,然后一定要开 -Ofast,不过不要用#pragma开,要在编译命令里加上,因为有些UB只会在-Ofast里暴露出来,在其它情况下可能采取了保守的处理方案,导致本地正常交上去的时候却异常。
另外我能想到的由于环境不同出现的问题还有换行\n和\r之类由于系统不同而出现的问题,我的看法是一律使用cin/cout,不差这点时间(不过特别大的读入还是应该注意的)。
再如果是因为编译器实现不完整或者编译器出bug的情况,就是我的知识盲区了。希望能帮助到你。