oj上的测试点信息
- Accepted 通过!(AC)
- Wrong Answer 答案错。(WA)
- Runtime Error 程序运行出错,意外终止等。(RE)
- Time Limit Exceeded 超时。程序没在规定时间内出答案。(TLE)
- Presentation Error 格式错。程序没按规定的格式输出答案。(PE)
- Memory Limit Exceeded 超内存。程序没在规定空间内出答案。(MLE)
- Compile Error 编译错。程序编译不过。(CE)
【黑盒测试】
算法竞赛一般采取黑盒测试:事先准备好一些测试用例,然后用它们测试选手程序,根据运行结果评分。除了找不到程序(如程序名没有按照比赛规定取,或是放错位置)编译错等连程序都没能运行的错误之外,一些典型的错误类型如下:
在一些比较严格的比赛中,输出格式错被看成是答案错,而在另外一些比赛中, 则会把二者区分开。在运行时,除了程序自身异常退出(例如,除0、 栈溢出、非法访问内存、断言为假、main函数返回非0值)外,还可能是因为超过了评测系统的资源约束(如内存限制、最大输出限制)而被强制中止执行。有的评测系统会把这些情况和一般的运行错误区分开,但在多数情况下会统一归到 “运行错”中。
需要注意的是,超时不一定是因为程序效率太低,也可能是其他原因造成的。例如,比赛规定程序应从文件读入数据,但所写程序却正在等待键盘输入。其他原因包括:特殊数据导致程序进入死循环、程序实际上已经崩溃却没异常退出等。
如果上述错误都没有,那么恭喜你, 你的程序通过了测试。在ACM/ICPC中,这意味着你的程序被裁判接受(accepted, AC),而在分测试点的比赛中,这意味着你拿到了该测试点的分数。
需要注意的是,一些比赛的测试点可以给出 “部分分”——如答案 正确但不够优,或者题目中有两个任务,选手只成功完成了一个任务等。不管怎样、 得分的前提是不超时、没有运行错。只有这样,程序输出才会参与评分。
总结:
一:WA 错误答案,有数据未通过
二:TLE 超时,时间超过了题目所限制的时间,一般是时间复杂度在一亿以内,基本没啥问题,一亿不好说,但十几亿更多就一定不行了;此时需要优化自己的算法,降低时间复杂度
三:PE 提交格式错误,换个编译器,或者是看代码中输出中是否与答案差个空格 逗号 换行啥的
四:提交失败 这个与本网站的服务器状态有关,比如POJ 的网站崩了,挂在POJ上的一些OJ题目都不能提交
五:内存爆了,这个属于题目数据过大,导致运行内存超出,比较好的办法及常用的办法是:想办法降低对内存的占用,如优化一些不必要的过程,或者是经常的边输入边输出(时常会用到)
六:runtime error 运行时发生错误,这个问题往往就是程序跑到一半不能跑了,可能发生了数组越界,一般是这个,这时候只需要将数组开大一点就好了,数组一般可以开到1e9,