ACM过程中的提交结果(新手必看!)
ACM 中提交结果以及可能的原因
备注:以下内容全都是来自我平时写程序过程中的总结,如有纰漏,请大家指正,并多多包涵
Accepted (正确)
当你在某一ACM在线测评系统上提交了你的代码后,如果你得到了一个Accepted,简称AC,恭喜你,通过了这道题,你的代码是正确的。除了Accepted之外的所有结果,都是不符合要求的。
Compile Error(编译错误)
简称CE。通常是指语法错误,这是最最简单的错误了,因为你完全可以在提交之前,在本地的编译器上测试出来,然后改正。
Wrong Answer(错误)
简称WA。很多ACM新手们,在千辛万苦写好一份代码并且自认为是正确的,但是提交之后却得到了Wrong Answer的结果,他们百思不得其解,其实,OJ的后台有很多组测试数据,就算你的代码可以通过样例,但并不代表可以通过后台的所有数据,只要你有一组数据输出与测试输出不一样,你就无法AC。所以建议同学们,可以自己脑补一些特殊数据,看看是否能够得到正确的结果。除此之外,还要再次认真读题,很多时候Wrong Answer都是因为没有正确理解题目的意思。
Output Limit(输出超限)
遇到这种错误,一般都是固定套路,以下是我个人的总结
C
语言中的多组输入用到了如下格式:while(scanf("%d",&x)){ }
这时候会出现输出超限,改为while( ~ scanf("%d",&x)){}
或者while(scanf("%d",&x) != EOF){}
- 程序中输出语句有死循环,导致程序输出无法终止
C++
程序中写了宏,如#define ON 1
虽然不知道为啥原因,但删掉define这一行就没有输出超限了,我也很无语……
Presentation Error(格式错误)
简称PE。这种错误还是比较容易发现并改正的,通常产生的原因是由于你的代码输出的格式与题目要求的不一致。
常见的PE有以下几种:
- 大小写错误
- 行末不应该有空格
- 分号 冒号 逗号等中英文标点符号傻傻分不清
- 换行和空格乱用
Time Limited Exceed(超时)
简称TLE。通常需要进行算法优化来降低时间复杂度,加快代码运行的时间。
常见的TLE有以下几种情况:
- 程序中出现无法终止的死循环
- 读取输入流和输出流的时间太长。(
C++
的输入输出中,cin
和cout
没有scanf
和printf
快,不要问我是怎么知道的,我都已经在输入输出上载过无数跟头了…建议同学们养成用scanf
和printf
的好习惯)
不过cin/cout这么好用难道就没有什么解决办法吗,其实是有的,在main函数里面写上:
// 写在main函数里面的第一行即可让C++IO流得到加速~~~
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
- 1
- 2
- 3
- 4
- 时间复杂度大,常常是多层循环或者深递归导致。建议大家能不用循环的时候,就不用循环,因为循环费时。
Runtime Error(运行错误)
简称RE。这种错误也是好避免的。
常见的RE有以下几种:
- 数组开得太小了,导致访问到了不该访问的内存区域
- 发生除零错误
- 大数组定义在函数内,导致程序栈区耗尽
- 指针用错了,导致访问到不该访问的内存区域
- 程序抛出了未接受的异常(尤其是Java语言,大部分运行错误都是因为空指针异常–>找不到对象)
- 段错误:数组越界、dfs栈溢出
文章来源: blog.csdn.net,作者:爱玲姐姐,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jal517486222/article/details/78760927
- 点赞
- 收藏
- 关注作者
评论(0)