在信息学奥林匹克竞赛(OI)和在线评测系统(如 Codeforces、洛谷、LeetCode 等)中,提交代码后系统会根据运行结果返回不同的状态缩写。以下是常见的报错提示及其含义:
1. AC (Accepted / 答案正确)
含义:程序完全正确,通过了所有测试用例。
应对:无需修改,继续下一题!
2. WA (Wrong Answer / 答案错误)
含义:程序输出的结果与正确答案不一致。
常见原因:
逻辑错误(如边界条件未处理、算法设计错误)。
输入输出格式错误(如多输出空格、换行符缺失)。
数据范围未考虑(如溢出、负数处理)。
调试建议:检查边界数据(如最小/最大值)、用样例逐步模拟代码逻辑。
3. TLE (Time Limit Exceeded / 时间超限)
含义:程序运行时间超过了题目限制。
常见原因:
算法时间复杂度太高(如暴力解法替代高效算法)。
死循环(如循环条件错误导致无法退出)。
输入输出方式效率低(如 C++ 中未使用 scanf/printf 或关闭同步流)。
优化方向:优化算法复杂度(如用二分代替遍历)、减少重复计算。
4. MLE (Memory Limit Exceeded / 内存超限)
含义:程序使用的内存超过了题目限制。
常见原因:
数组开得过大(如全局数组占用过多内存)。
递归深度过大(如未优化的深递归导致栈溢出)。
数据结构设计冗余(如不必要的缓存)。
优化方向:改用动态分配、减少全局变量、优化数据结构。
5. RE (Runtime Error / 运行时错误)
含义:程序在运行期间崩溃。
常见原因:
除零错误(如 x / 0)。
数组越界(访问负下标或超过数组长度)。
空指针访问(如未初始化的指针或引用空对象)。
栈溢出(如递归层数过深)。
非法系统调用(如某些竞赛禁止文件操作)。
调试建议:检查数组大小、指针/引用初始化、递归终止条件。
6. CE (Compilation Error / 编译错误)
含义:代码未能通过编译。
常见原因:
语法错误(如缺少分号、括号不匹配)。
使用了禁止的语言特性(如 C++11 特性未开启)。
函数/变量名拼写错误。
调试建议:仔细阅读编译器报错信息,逐行检查代码。
7. PE (Presentation Error / 格式错误)
含义:答案内容正确,但输出格式不符合要求(如多余的空格、换行)。
注意:多数评测系统已不再区分 PE 和 WA,会直接判为 WA。
调试建议:严格对照题目要求的输出格式。
8. OLE (Output Limit Exceeded / 输出超限)
含义:程序输出的内容超过题目允许的大小限制。
常见原因:死循环中持续输出内容,或误操作导致重复输出。
其他提示(部分系统特有)
PC (Partial Correct / 部分正确):部分测试用例通过(如 IOI 赛制中的得分制)。
UKE (Unknown Error):系统内部错误,需重新提交。
Pending:等待评测中。
调试技巧
WA 时:构造极端测试数据(如最小输入、最大输入)验证逻辑。
TLE/MLE 时:分析算法复杂度,避免不必要的计算。
RE 时:使用调试工具(如 gdb)或打印中间变量定位崩溃点。
掌握这些状态的含义能帮助你快速定位问题,提升解题效率!