• Online Judge系统     

Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交给定问题的多种程序(如C、C++、Pascal、Java)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。

一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制、内存使用限制和安全限制等。用户程序执行的结果将被Online Judge系统捕捉并保存,然后再转交给一个裁判程序。该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据是否满足一定的逻辑条件。最后系统返回给用户一个状态:通过(Accepted)、答案错误(Wrong Answer)、超时(Time Limit Exceed)、超过输出限制(Output Limit Exceed)、超内存(Memory Limit Exceed)、运行时错误(Runtime Error)、格式错误(Presentation Error)、无法编译(Compile Error),并返回程序使用的内存、运行时间等信息。在线测评系统的评判情况如表1所示。

表1  测评系统的评判结果

评判

缩写

说明

Accepted

AC

程序通过了所有的测试点,被判为正确

Presentation Error

PE

程序的输出结果是正确的,但是格式不符

Time Limit Exceeded

TLE

程序运行超过了限定的时间,可能是超过总时间限定,也可能是超过单个测试点时间限制

Memory Limit Exceeded

MLE

程序运行超过了所需的内存限制

Wrong Answer

WA

程序的输出结果不对

Runtime Error

RE

程序在运行时产生了无法处理的异常

Output Limit Exceeded

OLE

程序产生了多余的输出

Compile Error

CE

程序无法通过编译

System Error

在线测评平台无法运行该程序

Validator Error

检验程序在校验输出结果时出现异常

Online Judge系统最初使用于ACM-ICPC国际大学生程序设计竞赛和OI信息学奥林匹克竞赛中的自动判题和排名。现广泛应用于世界各地高校学生程序设计的训练、参赛队员的训练和选拔、各种程序设计竞赛以及数据结构和算法的学习和作业的自动提交判断中。

国内较好的在线测评系统有:

北京大学的PKU JudgeOnline(http://poj.org/ )

浙江大学ACM在线测试(http://acm.zju.edu.cn/onlinejudge/ )

杭州电子科技大学的HDU Online Judge System (http://acm.hdu.edu.cn/)

  • PKU JudgeOnline在线测评系统

在亚洲,北京大学的PKU JudgeOnline在线测评系统是规模最大、品质最高的在线测评系统。在IE浏览器的地址栏输入http://poj.org/,打开PKU JudgeOnline网站,出现如图1所示的主页。

图2-1  PKU JudgeOnline主页

在PKU JudgeOnline网站中,提供了4千多道题目。用户可以在该网站中注册一个用户ID,然后选择某个问题进行求解。用户可以将编写的程序通过网页提交给在线测评系统,每一次提交后,测评系统都会将评判结果显示在网页上。

用户可以根据测评系统反馈回来的评判结果修改程序,直到最终收获Accepted。这个过程不仅能培养用户独立分析问题、解决问题的能力,而且每成功解决一个问题都能给用户带来极大的成就感。

在PKU JudgeOnline主页单击超链接“Problems”,可打开如图2所示的页面。在页面中用列表的形式显示了系统中提供的各个问题,例如,页面中显示的“1000、A+B Problem、 56%(271151/480509)、2019-6-10,表示ID号为“1000”的题目“A+B Problem”截止到2019年6月10日,有480509人次提交了程序,其中有271151次通过。

图2  Problems 列表

在列表中可以选定某个问题,单击Title下的超链接,可以打开对应问题的页面。例如,单击ID号为2590的问题“Steps”超链接,或者在“Prob ID:”文本框中输入“2590”,单击“Go”按钮,可以打开如图3所示的页面。

图3  题目“Steps”的描述信息

这道题目的意思是:给出在数轴上的两个整点x、y(0<=x、y<2^31),问从x移动到y至少需要几步?移动时要求:(1)每一步可以比上一步长1、短1或相等;(2)第一步和最后一步必须是1。

  • 编程思路

输入数轴上的两个点from和to后,需要移动的距离就确定了distance=to-from。由于移动时,第一步和最后一步必须是1,且每一步与上一步相差不超过1。因此最快的移动方式应该为从1开始递增(每次加1)移动到中点附近,然后递减(每次减1)移动到终点。由于递增和递减的两个过程可以基本看成是对称的,因此设置一个变量cnt来记录每次移动的步数,初始值为0。移动时,从总距离distance上减去递增过程中的cnt和递减过程中的cnt,直到distance不再大于0。

例如,从10移动到19,需要移动的情况为:distance=19-10=9。

9-1(第1步)=8-1(最后1步)=7>0

7-2(第2步)=5-2(倒数第2步)=3>0

3-3(第3步)=0  结束。

  • 源程序

#include <iostream>

using namespace std;

int main()

{

int n,from,to,distance,cnt,ans;

cin>>n;

while(n--)

{

cin>>from>>to;

distance = to - from;

cnt = ans = 0;;

while(distance > 0)

{

distance -= ++cnt;

++ans;

if(distance > 0)

{

distance -= cnt;

++ans;

}

}

cout<<ans<<endl;

}

return 0;

}

在写出了该问题的程序后,可以将其提交给测评系统评判。单击主页中的“Submit Problem”超链接,打开如图4所示的提交页面。在“Problem ID”后的文本框中输入“2590”,在“Language”下拉列表框中选择语言为“C++”,在“Source”多行文本框中输入所编写的程序,单击“Submit”按钮,即可将程序提交给测评系统。之后,测评系统会打开一个页面显示评判后的结果。

图4  程序提交页面

PKU JudgeOnline作为一个优秀的开放式程序在线评测平台,值得程序设计爱好者好好利用。特别是计算机类专业的学生,可以充分利用自己的课余时间和上机实验课时间,随时上网做题,一旦提交答案,马上可以知道对错,从而极大地调动学习的积极性和主动性,大大提高实际的编程能力。

上POJ刷题的更多相关文章

  1. POJ刷题记录 (。・`ω´・)(Progress:6/50)

    1743:前后作差可以转化成不可重叠最长公共字串问题,运用后缀数组解决(参考罗穗骞神犇的论文) #include <cstdio> #include <cstring> #in ...

  2. C#LeetCode刷题,走进Google,走近人生

    概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/1015 访问. 本系列博文将会向大家展示我在LeetCode上的刷 ...

  3. POJ 水题(刷题)进阶

    转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 部分解题报告添加新内容,除了原有的"大致题意&q ...

  4. LeetCode刷题总结-数组篇(上)

    数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...

  5. LeetCode刷题总结-树篇(上)

          引子:刷题的过程可能是枯燥的,但程序员们的日常确不乏趣味.分享一则LeetCode上名为<打家劫舍 |||>题目的评论: 如有兴趣可以从此题为起点,去LeetCode开启刷题之 ...

  6. LeetCode 到底怎么刷?GitHub 上多位大厂程序员亲测的高效刷题方式

    作者:HelloGitHub-小鱼干 在众多的诸如阿里.腾讯等大厂之中,最看中面试者刷题技能的大概要数有"链表厂"之称的字节跳动了.作为一个新晋大厂,字节跳动以高薪.技术大佬云集吸 ...

  7. ZJOI2019一轮停课刷题记录

    Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...

  8. poj-2777线段树刷题

    title: poj-2777线段树刷题 date: 2018-10-16 20:01:07 tags: acm 刷题 categories: ACM-线段树 概述 这道题是一道线段树的染色问题,,, ...

  9. $2019$ 暑期刷题记录1:(算法竞赛DP练习)

    $ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...

随机推荐

  1. python dig trace 功能实现——通过Querying name server IP来判定是否为dns tunnel

    dns tunnel确认方法,查询子域名最终的解析地址: 使用方法:python dig_trace.py  "<7cf1e56b 67fc90f8 caaae86e 0787e907 ...

  2. poj 3321(带时间戳 + 区间统计)

    题目描述: 给定一颗树,求某个节点的子树的val值之和 可以用树的前序遍历给每一个节点编号,从而可以确定一个节点的子树的范围,这样就可以进行直接在区间上进行统计了. vector < int & ...

  3. zoj 3865

    Superbot Time Limit: 2 Seconds      Memory Limit: 65536 KB Superbot is an interesting game which you ...

  4. (转)ASP.NET 4.0 尚未在 Web 服务器上注册

    安装vs2010的时候忘记先安装IIS7了,导致出现了这个问题.经过网络查询发现解决方法如下: 运行:cmd命令,进入命令管理器, 输入:cd C:\\WINDOWS\\Microsoft.NET\\ ...

  5. UVa 11806 Cheerleaders (数论容斥原理)

    题意:给定一个n*m的棋盘,要放k个石子,要求第一行,最后一行,第一列,最后一列都有石子,问有多少种放法. 析:容斥原理,集合A是第一行没有石子,集合B是最后一行没有石子,集合C是第一列没有石子,集合 ...

  6. RTSP协议简介(转载)

    转自:http://ilinux.iteye.com/blog/505753 Real Time Streaming Protocol 或 者RTSP(实时流媒体协议),是由Real network ...

  7. iOS 计算字符串显示宽高度

    ObjC(Category of NSString): - (CGSize)getSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size{ ...

  8. 笔记——malloc、free、不同数据类型操作、.pyc文件、python安装第三方包、验证一个网站的所有链接有效性

    C — malloc( ) and free( ) C 语言中使用malloc( )函数申请的内存空间,为什么一定要使用free释放? **malloc()函数功能:是从堆区申请一段连续的空间,函数结 ...

  9. Ubuntu 必装软件及安装教程

    安装搜狗拼音输入法 因为sogou是基于fcitx的,所以先添加fcitx键盘输入法系统[系统默认是iBus].在终端中,输入命令将下载源添加至系统源(添加依赖). sudo add-apt-repo ...

  10. [IOI1998]Picture

    Description 在一个平面上放置一些矩形,所有的边都为垂直或水平.每个矩形可以被其它矩形部分或完全遮盖,所有矩形合并成区域的边界周长称为轮廓周长. 要求:计算轮廓周长. 数据规模: 0≤矩形数 ...