在信息学奥林匹克竞赛(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)或打印中间变量定位崩溃点。

掌握这些状态的含义能帮助你快速定位问题,提升解题效率!