为了尽快掌握基础知识,需要通过大量的练习测试。在练习的过程中,我们需要强有力的工具来获取大量的习题并且能够及时检测编写的程序是否正确(能够帮助我们测试编写的程序是否能很好地解决问题,不存在BUG),在线测评平台(OJ)能够满足我们的需求。
目前在线测评平台(OJ,Online Judge)很多,这里推荐几个实用的。
一、洛谷
洛谷创办于2013年,出道名为“洛谷Online Judge”,致力于为oiers/acmers提供清爽、快捷的编程体验。它不仅仅是一个在线测题系统,它拥有强大的社区、在线学习功能。同时,许多教程内容都是由五湖四海的oiers提供的,保证了内容的广泛性。无论是初学oi的蒟蒻,还是久经沙场的神犇,均可从洛谷获益,也可以帮助他人,共同进步。
1.注册账号
在洛谷首页右上角点击“注册”,进入注册页面。
可以选择电子邮件和手机号码两种注册账号方式。注意注册后需要按照提示激活账户。
2.登录洛谷
在洛谷首页右上角点击“登录”,进入登录页面。
输入用户名、密码和验证码,点击登录按钮登录。
3.题单刷题
点击洛谷网页左侧导航栏中的“题单”,进入到“题单广场”页面。洛谷的题单是按照学习进度来组织的,非常适合初学者。
4.题库刷题
除了上面介绍的题单刷题外,还可以使用题库刷题。点击洛谷网页左侧导航栏中的“题库”,进入到“题目列表”页面。注意:题库中的题不是按照学习进程来排序组织的,对于初学者来说,在题库中依次刷题很容易碰到暂时无法解决的难题。对于初学者,可以选择“入门与面试”类型题库进行练习。
5.提交程序
不管是题单、题库,点击题目名称,会打开题目具体描述页面。题目描述内容包括:题目背景、题目描述、输入格式、输出格式、输入输出样例和说明/提示。
首先要认真读题,明确输入输出(此时要特别关注题目中给出的输入格式和输出格式),明确要解决的问题并确定解决问题的算法,然后在本地(例如Dev C++或者后文介绍的洛谷在线IDE)中编写程序并调试运行,测试编写的程序是否能够解决问题(此时可以借助题目给出的输入输出样例来初步测试)。本地编程并调试运行测试无误后,再提交答案。
在代码提交页面选择程序语言为C++,将程序代码复制(使用右键菜单或者快捷键Ctrl+C)粘贴(使用右键菜单或者快捷键Ctrl+V)到代码输入区域中,然后点击提交评测(其实也可以提交源程序文件)。
然后会自动跳转到测评结果页面,等待程序测评结束(等待时间要看洛谷平台的负载情况),会给出详细的测评结果(包括是否通过,每个测评点的信息,源代码等)。
如果出现编译错误,在测评结果页面会显示编译错误信息。
6.加入团队
在洛谷中还可以加入学习团队(甚至可以自己组建团队),我们的学习团队里老师会发布作业、举行比赛,团队里也有题单和题目。下面介绍加入团队的方法:
- 用个人账号登录洛谷:https://www.luogu.com.cn/auth/login
- 登录后点击学习团队链接:https://www.luogu.com.cn/team/3639
- 在团队页面点击加入团队按钮
- 填写验证信息(真实的年级、班级、姓名,以方便团队管理员审核)
- 等待审核通过(老师在QQ群里回复审核通过后自行刷新页面,或者等待一段时间刷新页面查看是否通过审核),审核通过后会出现如下提示:
- 进入团队方法:鼠标移动到页面右上角个人头像上,在下浮菜单中点击我的团队。在我加入的团队里点击团队名称进入团队。
7.在线IDE
洛谷平台还提供了一个在线IDE,可以直接在网页中编辑程序并提交查看运行结果。如果我们安装Dev C++出现问题,可以直接在在线IDE中编程。并且洛谷的在线IDE提交的程序是在Linux环境下运行的,与信息学竞赛程序判分环境相同。
二、NOI OpenJudge
NOI OpenJudge最大的特色是所有题目按照学习进程组织,非常适合于初学者。
三、信息学奥赛一本通在线OJ
《信息学奥赛一本通》是一本影响较大,使用较为广泛的信息学奥赛入门教材(除一本通外,还推出了《训练指导教程》、《初赛篇》、《提高篇》、《高手训练》等系列丛书)。这套教材配套了在线OJ平台,包括基础知识、算法以及历届真题。
四、CCF中学生程序设计在线评测系统
“CCF中学生程序设计在线评测系统”是CCF(中国计算机学会,信息学奥赛官方组织)推出的OJ。