机试评判系统评判提交程序后返回结果详细说明

    科技2022-07-11  133

          本文将对评判系统评判考生提交程序后返回的结果做详细的说明,并且针对不同的返回结果,对可能出现错误的地方作出初步的界定。


    Accepted (答案正确):你的程序对所有的测试数据都输出了正确的答案,你已经得到了该题的所有分数,恭喜 。


    Wrong Answer (答案错误):评判系统测试到你的程序对若干组(或者全部)测试数据没有输出正确的结果。出现该种错误后,一般有两种解决方向:如果对设计的算法正确性有较大的把握,那么你可以重点考虑代码健壮性,即是否存在某些特殊数据使程序出现错误,比如边界数据,比如程序中变量出现溢出。另一种方向,即怀疑算法本身的正确性,那么你就需要重新考虑你的算法设计了。


    PresentationError ( 格式错误):评判系统认为你的程序输出“好像”是正确的,只是没有严格按照题目当中输出所要求的输出格式来输出你的答案,例如你忽略了题目要求在每组输出后再输出一个空行。出现这种错误,往往预示着你离完全正确已经不远了,出现错误似乎只是因为多输出了一些空格、换行之类的多余宇符而已。但这不是绝对的,假如在排版题中出现格式错误,那么有可能你离正确的答案仍然有一定的距离。


    Time Limit Exceeded ( 超出时间制):你的程序在输出所有需要输出的答案之前已经超过了题目中所规定的时间。若这种结果出现在你的评判结果里,依然有两种方向可供参考: 1、假如你确定算法时间复杂度能够符合题目的要求,那么依旧可以检查是否程序可能在某种情况下出现死循环,是否有边界数据可能会让你的代码不按照预想的工作,从而使程序不能正常的结束。2、你设计的算法时间复杂度是否已经高于题目对复杂度的要求,如果是这样,那么你需要重新设计更加高效的算法或者对你现行的算法进行一定的优化。


    Runtime Error (运行时错误):你的程序在计算答案的过程中由于出现了某种致命的原因异常终止。你可以考虑以下几个要点来排除该错误: 1、程序是否访问了不该访问的内存地址,比如访问数组下标越界。2、程序是否出现了除以整数0,从而使程序异常。3、程序是否调用了评判系统禁止调用的函数。4、程序是否会出现因为递归过深或其他原因造成的栈溢出。


    Compile Error ( 编译错误):你提交的程序并没有通过评判系统的编译,可根据更详细的编译信息修改你的程序。


    Memory Limit Exceeded ( 使用内存超出限制):你提交的程序在运行输出所有的答案之前所调用的内存已经超过了题目中所限定的内存限制。造成这种错误的原因主要有两个方面: 1、你的程序申请过多的内存来完成所要求的工作,即算法空间复杂度过高。2、因为程序本身的某种错误使得程序不断的申请内存,例如因为某种原因出现了死循环,使得队列中不断的被放入元.素。当然也千万别忽略自己的低级错误,比如在声明数组大小时多打了一个0。


    Output Limit Exceeded (输出超出限制):你的程序输出了过多的东西,甚至超出了评判系统为了自我保护而设定的被评判程序输出大小的最高上限。一般来说该种错误并不常见,一旦出现了也很好找原因。要么就是你在提交时忘记关闭你在调试时输出的调试信息(我经常输出DP时的数组来动态的观察状态的转移);要么就是程序的输出部分出现了死循环,使得程序不断地输出而超出系统的限制。


            以上几种结果就是评判系统可能会返回的几个最基本的结果。若返回Accepted,则你可以获得该题的所有分数。若返回其它错误,则根据不同的考试规则,你的得分将会有一定的差异。若你参加的考试采用按测试点给分规则,你依然能够获得你通过的测试点 ( 即该程序返回正确结果的那部分测试数据 ) 所对应的分数;但是,若你参加考试采用所有数据通过才能得分的评分规则,那么很可惜,到目前为止你在这道题上的得分依旧是0分。假如评判结果,显示你提交的程序错误的,你可以在修改程序后再次提交该题,直到获得满意的分数或者放弃作答该题。  

    Processed: 0.008, SQL: 8