NOI 系列比赛配置
能否使用某写法
bits/stdc++.h:可以使用,但注意标识符冲突问题,如y1next等。__int128:不建议使用,不能使用cinscanf读入,不能使用coutprintf输出。#define int long long:不建议使用,对关键词进行宏定义是未定义的操作。ios::sync_with_stdio(false); cin.tie(0);:可以使用,但需要:仅使用 C++ 风格 IO;且在最后刷新缓冲区。fclose(file.in);:不建议使用,若要使用一定要提前刷新缓冲区。__gcd():可以使用;gcd():C++ 14 不可以使用。#pragma GCC optimize(2):CCF 明确规定不可以使用。exit(0):可以使用,与return 0;效果一致,且可以在非主函数中退出运行,并且符合 CCF 规定“主函数返回值为 \(0\)”。registerinline:不建议使用,在 C++ 14 中没有实际效果。static可以使用。- C++ 14 及之前的新特性:可以使用,评测系统为 C++ 14,见下文章节 #编译选项。
编译选项
CCF 在 NOIP 评测机的编译选项:g++ a.cpp -o a -lm
建议的编译选项:-std=c++14 -Wall -Wextra -Wl,--stack=268435456 -O
-std=c++14,使用 C++ 14 新特性(NOI 系列评测系统为 C++ 14)。
如果编译器版本过低,会导致此命令报错,可以尝试使用-std=c++11,也包含了大部分实用的特性,如autofor(int x : d)等,或安装 此版本 的Dev-C++。-Wl,--stack=268435456,将栈空间确定为 256MB。-Wall-Wextra,开启更多警告信息,如long long变量使用%lld读入和输出、未使用的变量、逻辑运算符优先级、多个if与else配对问题、语句if(a=1)等。-Ox,开启 Ox 优化,NOIP 评测机为-O,NOI 评测机为-O2。-DXXX,自定义标识符,与#define XXX效果类似。-g,要手动调试需要打开。
注:-fsanitize=undefined,检测未定义的行为,但 NOI 系列比赛并不支持,不过许多未定义的行为在 -Wall -Wextra 中已经包含了。
测试以上编译选项
配置好编译选项之后,复制以下代码并编译运行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
如图,若支持 C++ 11 的新特性,并且相关警告也都正确提示,则配置正常。

关于 Dev-C++
- Dev-C++ 几乎没有代码补全,因此特别需要注意经常依赖代码补全的函数名,如不同 STL 的头尾元素和放入取出操作的函数名,以及很长的函数名,如
next_permutationsetprecision等。 - 如果不能调试,
建议不调试,检查编译选项是否为debug而不是release,生成代码性能分析是否为Yes,产生调试信息是否为Yes。 - 建议开启自动保存,且手动备份文件到其他文件夹,防止类似编译命令打错导致源码被覆盖等问题。特别地,大段没用的代码建议暂存到其他文件,而不是直接删除。

参考资料和推荐阅读: