ACM/IPCP新生入门指南

来源:互联网 发布:守望先锋录制软件 编辑:程序博客网 时间:2024/05/21 11:25

本文主要介绍新生如何使用网上测评系统online judge进行训练,下面以hdu oj为例。

hdu oj
进入这个页面之后,首先进行注册。
regist
建议在比赛期间,Nickname 填写自己的学号。Location 建议填写 SCNU 。注册之后,也可以在右上角的 Control Panel 里面的 Update Your Information 修改自己的 Nickname 。
regist
注册之后,就可以对 HDU OJ 上的题目进行提交了。点击页面上方的 Problem Archive 可以看到 OJ 上的题目。
archive

第11页有很多对新手友好的中文题,适合新手适应 ACM 的题目。

problems

这里以题号为 2003 的题目进行讲解。题目的意思是要求一个实数的绝对值。

2003
我们可以直接使用 cmath 头文件里面的 fabs() 函数,也可以直接判断这个数字是否小于 0 ,若是则乘以 -1.0 即可。需要注意的地方是,输出要求保留 2 位小数,所以需要使用 iomanip 头文件进行数位控制。
p
然后对其编译,运行。需要注意的是,在题目里面的 Sample Input 的两个数字是连着输入, Sample Output 的数字是连着输出的。但是实际上的效果是,第一个数字输入,按回车之后,第一个数字的答案马上输出;然后输入第二个数字,第二个答案输出。所以我们需要用到 while 循环来对数据进行读入(见上图)。最后,我们按 Ctrl + C 结束输入。
p
对于使用 C 语言的同学可以参考下面的代码。
p
编写好代码之后,可以按 2003 页面的最下面中间的 Submit 连接进入提交页面,进行提交。
p
提交之后,就可以在 Realtime Status 上面看到我们的代码通过了所有的测试数据,得到了 Accepted 。
p
有些新生问,他们的代码已经通过了题目中的 Sample Input 和 Sample Output ,但是为什么提交之后得到的是 Wrong Answer 。这是因为测评系统的数据并不是只有 Sample Input 和 Sample Output 。在系统的后台,会有很多的数据等待测试。你的代码必须每一组测试数据都通过之后,才可以得到 Accepted ,只要有1组不通过,都是不能返回 Accepted 的。
另外,在题目标题的下方,会有一个 Time Limit 和 Memory Limit 的说明。这是对你提交代码的时间限制和内存限制。你的代码必须在相应的时间内跑出结果(无论对错),否则就返回 Time Limit Exceeded 。对应的,你的代码运行过程中,内存的使用不允许超过限制的数值,否则直接返回 Memory Limit Exceeded 。
p
OJ 除了这些返回结果之外,还有其他的返回结果,可以在 FAQ 页面可以看到。或者你可以加入新生群,找师兄师姐进行询问。
p
HDU OJ 除了第11页之后,还提供一个 ACM Step 的进阶训练。你可以在里面按照 HDU 设计的题目顺序进行训练。
建议初学者先通过Chapter One中Section One的题目,了解ACM的常见输入输出格式
附:HDU ACM Steps 攻略~
p
除了 HDU OJ 之后,国内比较出名的还有几个,例如浙江大学的 ZJU OJ 和北京大学的 PKU OJ
如果还有其他问题,可以加入SCNUACM新生QQ群:83969086 进行询问 。

0 0
原创粉丝点击