ACM过程中的提交结果(新手必看!)

14 篇文章 1 订阅

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++的输入输出中,cincout没有scanfprintf快,不要问我是怎么知道的,我都已经在输入输出上载过无数跟头了…建议同学们养成用scanfprintf的好习惯)
    不过cin/cout这么好用难道就没有什么解决办法吗,其实是有的,在main函数里面写上:
  // 写在main函数里面的第一行即可让C++IO流得到加速~~~
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  • 时间复杂度大,常常是多层循环或者深递归导致。建议大家能不用循环的时候,就不用循环,因为循环费时。

Runtime Error(运行错误)

简称RE。这种错误也是好避免的。
常见的RE有以下几种:

  • 数组开得太小了,导致访问到了不该访问的内存区域
  • 发生除零错误
  • 大数组定义在函数内,导致程序栈区耗尽
  • 指针用错了,导致访问到不该访问的内存区域
  • 程序抛出了未接受的异常(尤其是Java语言,大部分运行错误都是因为空指针异常–>找不到对象)
  • 段错误:数组越界、dfs栈溢出

  • 14
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值