OJ常见的评测状态
(1)答案正确(Accepted,AC)
恭喜你!所提交的代码通过了数据!这个评测结果应该是大家最喜欢见到的,也非常好理解。如果是单点测试,那么每通过一组数据,就会返回一个Accepted;如果是多点测试,那么只有当通过了所有数据时,才会返回Accepted。
(2)编译错误(Compile Error,CE)
很显然,如果代码没有办法通过编译,那么就会返回Compile Error。这时要先注意是不是选错了语言,然后再看本地的编译器能不能编译通过刚刚提交的代码,修改之后再次提交即可。
(3)答案错误(Wrong Answer,WA)
“答案错误”是比较令人懊恼的结果,因为这说明代码有漏洞或者算法根本就是错误的,只是恰好能过样例而已。不过有时可能是因为输出了一些调试信息导致的,那就删掉多余的输出内容再输出。当然,大部分情况下都需要认真检查代码的逻辑有没有问题。
(4)运行超时(Time Limit Exceeded,TLE)
由于每道题都会规定程序运行时间的上限,因此当超过这个限制时就会返回TLE。一般来说,这一结果可能是由算法的时间复杂度过大而导致的,当然也可能是某组数据使得代码中某处地方死循环了。
因此,要仔细思考最坏时间复杂度是多少,或者检查代码中是否可能出现特殊数据死循环的情况。
(5)运行错误(Runtime Error,RE)
这一结果的可能性非常多,常见的有段错误(直接的原因是非法访问了内存,例如数组越界、指针乱指)、浮点错误(例如除数为0、模数为0)、递归爆栈(一般由递归时层数过深导致的)等。
一般来说,需要先检查数组大小是否比题目的数据范围大,然后再去检查可不可能有特殊数据可以使除数或模数为0,有递归的情况则检查是否在大数据时递归层数太深。
(6)内存超限(Memory Limit Exceeded,MLE)
每道题目都会有规定程序使用的空间上限,因此如果程序中使用太多的空间,则会返回MLE,例如数组太大一般最容易导致这个结果。
(7)格式错误(Presentation Error,PE)
这应该是最接近Accepted的错误了,基本是由多输出了空格或者换行导致的,稍作修改即可。
(8)输出超限(Output Limit Exceeded,OLE)
如果程序输出了过量的内容(一般是指过量非常多),那么就会返回OLE。一般是由输出了大量的调试信息或者特殊数据导致的死循环输出导致的。
最后分享一首自己很喜欢的诗(姑且算是吧)。我欲乘风向北行,雪落轩辕大如席,我欲借船向东游,绰约仙子迎风立,我欲踏云千万里,庙堂龙吟耐我何,昆仑之巅沐日光,沧海绝境见青山,长风万里燕归来,不见天涯人不回。
本文来自博客园,作者:NotYourferry,转载请注明原文链接:https://www.cnblogs.com/pinghuimolu/p/15160042.html