oj判题WA/RE怎么办

[转]POJ WA/RE指南

 
“POJ上头的题都是数学题”,也不知道是那个家伙胡诌的……但是POJ的要求就是算法通过了也不让你AC。下面本人就这560题的经验,浅谈一下WA/RE了怎么办。 

以下内容是扯淡…… 

一、WA/RE了之后不要感到不爽……实际上,有让你WA的机会是很幸福的,如果在NOIP上我能交题以前有人告诉我“Wrong Answer”……所以说你得感谢ACM给你改正的机会。 

二、WA/RE了之后不要过于自信。实际上“第一次交WA,再交一次就AC”的说法几乎是胡说八道。WA了一定是你的程序写错了。 

三、如果你3小时内还没改对,休息一会,明天再来吧。 

好,现在我们步入正题。首先就WA的修改方法做下介绍。当然了,样例数据得先过。 

WA篇: 

一、看看人家的输入数据。是不是把boy的数据安到girl上了,n的值赋给m了……特别是样例中这一对数据还是相等的时候……我都不知道有几次干这样的傻事了。 

二、还是输入数据。如果一个测试点里有多组数据,有没有可能比方说sum = 0的时候结果一定为0,而无论后面的数据是什么?这样的话你可能会一个continue转到下一组数据。可是数据流才不会continue,后面没读完的数据理所当然的冲到了最前方,你的程序就这样WA了…… 

三、初始化。你的初始化正确么?边界条件是0,1,还是kn? 

四、循环变量。for的循环变量如果是k,就看看后边用的是不是i。 

五、你的智商够不够高,是否考虑到所有的问题了?你可以想办法搞一份AC了的代码,里面写什么连看都不看,之后编写一个“测试数据制造机”,数大,数据多,情况就复杂,就可能出现你没想到的状况,拿两个程序对一下答案就知道了。 

六、一定要看discuss,那里面都是几年来前辈们的错误总结。说不定还有又简单又厉害的数据供你使用。 

RE篇: 

一、数组是不是开小了?实在不行在Memory Limit允许的前提下开到数据范围的10倍以上。 

二、除0错误。有多少高人在这个地方摔跤,甚至一蹶不振!全面检查一下 / 和 % 运算符的右边有没有可能等于 0。 

三、数组起始位置。数组最好从 0 开始使用。如果定义a[MAX],就千万不要使用a[MAX]这个值。事实上,这样一般都引发WA。 

四、死循环的话一般不报TLE,特别是循环中有数组操作的情况。因为这种情况下通常会出现a[-6569]一类的囧物……RE是理所应当的。死循环的话,就看看循环结束的条件是不是正确。 
TLE:
如果数据类型是longlong,用scanf输入的时候却用了%d的话,就会TLE(但可以在dev上运行)

CE:
做hdu1233题的时候,一直ce,最后发现#include<algorithm>好像不能和数组名rank同时使用,把数组名改成ran就ac了,可能是algorithm头文件中包含一个名为rank的数组。

如果有了新发现还会继续发表。
 转自http://www.cnblogs.com/shengrang/p/3843483.html
posted @ 2018-03-08 14:19  boobird  阅读(2785)  评论(0编辑  收藏  举报