什么是OJ?
Online Judge
OJ就是OnlineJudge的简称。中文译作在线评测系统。简单点说就是你的程序能得几分由它来评定的。当然,在线评测系统(OJ)是我们平时练习使用的评测系统,正式的NOIP比赛的时候使用的是离线状态的程序评测系统,所以程序在写的时候有那么一点点不同,但是差异很小,很容易解决。
评测规则
一般OJ使用的是暗箱评测的方式。简而言之就是,白猫黑猫抓住老鼠就是好猫。OJ并不关心程序算法是如何编写和实现的。OJ的做法仅仅是根据题目编写者的事先设定,按照顺序给程序一组输入,然后按照比对规则检查程序有没有给出正确的输出。
有那么点像弹幕
测试点
所谓测试点就是一组输入和一组输出就是一个测试点。如果你的程序在输入测试数据n的时候正确给出了它对应的输出,那么这就叫“通过了第n个测试”。每个测试点都会对应相同的分值,如果你通过了这个测试点就会得到这些分,反之则得不到这个测试点的分。
评测结果
OJ在评测你的程序时,会根据你的程序对每一个测试点的反应给出一个评测结果。一般是以缩写形式。常见的结果缩写如下。
AC
AC=Accepted。意思是说你的程序完美地通过了这个测试点,得到了对应的分数。如果你看见了这道题的全部测试点都是AC状态,也就是说,你通过了这道题的全部测试点,那么你就得到了全部的分值。
WA
WA=Wrong Answer。中文意思是错误答案。也就是说,你的程序在运行该测试点的时候给出了错误的答案。当然你也就得不到这个测试点的分值了。
TLE
TLE=Time Limit Exceeded。中文意思就是超出时间限制,也就是说你的程序在运行该测试点的时候,在规定时间内(一般是1秒)没能结束运行。那么你就不能得到这个测试点对应的分数。这个时候OJ会直接强行结束掉你的程序,以免浪费太多它的资源。这里我想重申一下:请务必在上交程序之前删去程序末尾的system("pause")和getch()语句,这两个语句一般适用于在程序给出计算结果后等待用户输入回车。请记得,OJ以及NOIP评测机上没有人会帮你输入回车的。一旦你忘记删除了,那么结果一定是TLE!
MLE
MLE=Memory Limit Exceeded。中文意思就是超出内存限制。也就是说你的程序在运行的时候申请了过多空间。比如你一不小心定义了2亿个整型变量。(当然如果你没有其他方法自己一个一个定义的话是不可能MLE的)当然你得不到MLE的测试点的分值。
RE
RE=Runtime Error。也就是运行时错误。一般来说就是代表程序在运行的时候报了错。比如在计算1/x的值的时候刚好x的值是0。或者说你把int的变量的值变成了23亿。(int范围:-21亿~21亿)当然你也没法得到RE测试点的分值。
CE
CE=Compilation Error。中文意思是编译错误。意思就是说你的程序存在语法错误,OJ的编译器无法理解你的程序。比如你忘记了一个分号,或者在哪个该加逗号的地方忘记加了。一般来说CE错误会导致整道题0分!
关于洛谷
洛谷就是OJ之一,也兼具OIer(也就是信息竞赛选手)社区的功能。
请自行注册一个洛谷账户并登录。
在洛谷上,请在登录状态下点击川妹在QQ群里发送的链接,加入洛谷团队。
随后请自行修改团队内昵称(请使用真名)!!!
打开洛谷并登陆。如图
然后点击右上方头像处-> <我们团队的名字>,结果如图:
点击相应的题目。
按照要求编写好程序后,点击提交按钮。语言选择C语言。(注意不要勾选O2优化,因为比赛时不会开启优化)结果如图:
最后点击交付评测,稍等片刻即可看到结果。