ACM的少许介绍(改).doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ACM的少许介绍(改)

ACM的少许介绍 飘 ^_^ 一、关于提交后的信息。 a、Accepted。(AC) 通过,恭喜~ b、Presentation Error(PE) 格式错误。出现PE,离AC已经不远了。结果是对的,但是多了或少了行末的空格或行间的空行。P.S.如果是在一行输出 中多了空格或空行,将得到WA。 c、Wrong Answer。(WA) 答案错误。有这样的疑问,为什么自己在本机上的运行结果与Simple Output一致,提交后却得到WA?“样例数据是用于表达题目的数据,实际测试时使用的数据规模更大,同时也可能有针对性的检验程序是否考虑了一些特殊情况。所以能通过样例数据的程序并不一定能通过测试Runtime Error。(RTE) 运行时错误。一般来说得到这样的错误,是以下几个原因之一: 1)栈溢出。 2)下标越界。这种情况比较常见。例如定义int a[100],在程序中出现对a[100],a[-1]这样的访问,都会造成RTE 3)除零。在使用除法(包括取模)操作时,要注意处理除数为零的情况。 e、Time Limit Exceeded。(TLE) 超时。除了正确性,效率也是很重要的。当得到TLE时,就需要考虑算法合适与否,是否有改进的余地,或者在某种情况下会否出现死循环。有时,对输入结束的判定不当,也将导致超时。 f、Memory Limit Exceeded。(MLE) 超空间限制。除了少许空间限制比较严格(512K上下)的题目,一般不易发生,如果是30000K的空间限制,而得到MLE的话,说明空间实在开的太多了……P.S.如果是用new 运算符开空间,不配合使用delete,空间是不会自动释放的,不注意这点,也可能会造成MLE。 g、Compile Error(CE) 编译错误。例如使用库函数时,参数和返回值的类型都必须与函数原形不完全一致,将得到CE。对于CE的情况,系统会给出出错信息,大部分是由于一些编译环境、开关设置的不同引起的,情形并不多,一般各个judge的FAQ上都有这方面的说明。 二、一些小技巧。 a、关于输入结束的判定 一般来说,如果题目没有特别说明输入结束的标志的话,默认是以EOF(End of File)作为输入结束标志的。这种情况下可以这样写 C++: while (cina) { …… } C: whlie (scanf(“%d”,a)!=EOF) { …… } 若题目明确指出(例如以输入数0为结束标志),可以这样 while (cina) { if (a==0) break; ……. } 若题中已指出输入的组数,则可以直接使用for语句。 (参:/people/ps/showproblem.php?problem_id=1007) b、关于输入输出。 当有多组输入,多组输出时,并不要求所有输出结束,然后再一齐输出。事实上,系统在判断时,只比对输出文件,而并不考虑其中的内容是在何时输出的(当然,不能超时)。 P.S. C++在读入大量数据时要比C慢许多。在某些情况下,足以导致超时。 c、double的范围虽然可以很大,但是其精度只有15~16位,而在正确性要求答案完全准确,因此有些时候,需要使用高精度算法(即使用数组来存多位数,模拟手算)来处理一些题目。 d、关于字符串处理的题目。在题目没有特别说明输入字符字符串不带空格的情况下,默认字符串是可能带空格的,这时建议使用char str[Max];gets(str);的方式来读入字符串。 e、一些冷僻的函数不推荐使用,有可能会导致错误。 f、注意 for (i=0,e=sqrt(t);ie,i++) 要比for (i=0;isqrt(t);i++) 快得多,类似的情形往往很多…… g、全局变量的使用。在主程序中开一个大数组,如double data[1000000],往往会导致RTE,这种情况下将数组做为全局变量即可。事实上,利用全局变量的特性,有许多好处。例如在使用递归函数时,可以起到减少参数的作用。 h、库函数、快速操作。 1)数组改动。 #include memory.h 格式 memset(array_name,value,sizeof(array_name)); 用于将一整个数组置值。大数组时比用for语句快得多 例如 int a[Max]; memset(a,1,sizeof(a)); // 可以实现把这个数组置1的效果。 2)二分查找,快速排序。 #include stdlib.h 格式 qsort(array_name,data_number,

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档