多得这东东,把RE了一晚的题目给干掉了 没看过的还是扫一遍吧,免得在discuss里被BS
常见问题解答
1. 我的程序如何进行输入输出?
2. 在线判题系统(以下简称POJ)的编译器是哪些?
3. 提交的时候可否使用快捷键?
4. 请问提交的程序是如果被判答的?
5. POJ对提交程序的不同判答的意义?
6. Special Judge的题目有什么不同?
7. 如何确定程序读入的终止?
8. 为什么我的程序在GCC/G++ (C/C++)下被判成WA/TLE/RE,但是在C/C++ (GCC/G++)下被判成AC?
9. 有些题目的时间限制是1秒,但是有些程序却以几秒的时间AC了?
10. 我的程序仅仅超过时间限制15MS,我该怎么优化程序呢?
11. 我还有其他问题?
________________________________________
问题: 我的程序如何进行输入输出?
解答: 你的程序应该始终使用标准输入(stdin)和标准输出(stdout).比如,你可以使用scanf(在C/C++编
译器下)或者cin(在C++编译器下)来读取数据,使用printf(在C/C++编译器下)或者cout(在C++编译器下)
来输出答案.用户提交的程序将不允许读/写文件操作.如果你坚持要这样做,OJ很可能会返回Runtime
Error(运行时错误)或者Wrong Answer(答案错误).
另外还要注意的是在C++下的I/O操作.由于其复杂的内部实现方式,cin和cout相对于scanf和printf来说
要慢上不少.如果在G++下编译提交,速度的差异将会愈加明显.所以如果题目给出的数据将有巨大的输入
数据时,使用cin和cout有可能导致意外的Time Limit Exceed(超时).
________________________________________
问题: 在线判题系统的编译器是哪些?
解答: 目前我们使用5个编译器来支持各种语言的程序提交.C和C++采用的是MS-VC++ 6.0,而对于
GCC/G++,采用的是MinGW+GCC/G++ 3.4.2. 对于Pascal, 采用的是FreePascal 2.0.0. 对于Java, 采用的
是JDK 1.5.0.
下面是1000的正确程序在不同编译器下的写法:
C and GCC:
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d/n", a + b);
return 0;
}
C++ and G++:
#include <iostream>
using namespace std;
int main(void)
{
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
使用GCC/G++的提醒:
对于64位整数, long long int 和 __int64 都是支持并且等价的.但是在读和写的时候只支持scanf("%
I64d", ...)和printf("%I64d", ...).
不支持"%lld"是因为MinGW下的GCC和G++使用的msvcrt.dll动态链接库并不支持C99标准.
根据ISO C++标准,在G++下,main函数的返回值必须是int,否则将会导致Compile Error(编译错误)的判答
.
Pascal:
Program p1000(Input, Output);
Var
a, b: Integer;
Begin
Readln(a, b);
Writeln(a + b);
End.
Java:
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a + b);
}
}
使用JAVA的提醒:
Java程序的提交必须使用单个源文件.除了要遵守其他程序提交的规则之外,使用Java提交的程序还必须
从一个静态的main方法开始执行,并让该main方法置于一个名为Main的类中,否则将会导致Compile
Error(编译错误)的判答.遵守了上述规则的情况下,你可以实现和初始化任意需要的类.
在JDK 1.4下的一个标准程序如下:
import java.io.*;
import java.util.*;
public class Main
{
public static void main (String args[]) throws Exception
{
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));
String line = stdin.readLine();
StringTokenizer st = new StringTokenizer(line);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a + b);
}
}
________________________________________
问题: 提交的时候可否使用快捷键?
解答: 以下是提交页面的快捷键
ALT+s 提交
ALT+u 用户名域(如果你还没有登陆)
ALT+l 编译语言选项
ALT+p 提交的题目ID号
________________________________________
问题: 请问提交的程序是如果被判答的?
解答: POJ首先将你提交的程序存为文件,然后试图按照你选择的编译语言进行编译.如果编译出现错误,
将会判答Compile Error.然后POJ运行您的程序,将输入数据送入程序,并且开始计时(记录程序的运行时
间).输入数据储存在一个或多个输入文件中.每一个文件都会用来判定你的程序并且只使用一次.在程序
执行过程中,如果POJ发现你的程序的运行状态符合Runtime Error, Time Limit Exceed, Memory Limit
Exceed 或者 Output Limit Exceed的标准,这些判答就会返回并结束.这意味着在TLE或者MLE的情况下,
不能确定程序是否能在充裕的硬件和时间条件下得到正确的结果.当你的程序跑完一个输入文件时,POJ将
会对你的输出文件和相应标准输出文件进行比较,或者在Speical Judge的题目时进行Special Judge.如
果输出是不正确的且不满足Presentation Error,将会给与Wrong Answer判答并结束.否则POJ将会继续进
行下一个输入文件的运行和处理.如果所有的输入文件都已结束,如果整个过程中没有遇到上述的6种错误
但是输出的符合Presentation Error的条件,将会给与Presentation Error的判答并结束.否则,恭喜
您,Accepted将会判答.
________________________________________
问题: POJ对提交程序的不同判答的意义?
解答: 下面是POJ所有的判答结果,缩写,和准确含义
Waiting: 你的程序正在被判答或者在等待判答.
Accepted (AC): 恭喜!您顺利通过了本题的所有测试数据!
Presentation Error (PE): 你的程序的输出格式和题目所要求的不是完全一致,但是输出的数据是正确
的.这一般是白字符(空格,tab和/或换行等白字符)的缺少或者多余或者空行的缺少多余所导致的.每行的
结尾的空格和输出的末尾空行不会被判成PE.请仔细检查输出的空格,空行等是否与要求的输出完全一致.
Wrong Answer (WA): 你的程序没有输出正确的答案。为了简化判答,如果是Secial Judge的题目,本该
判Presentation Error的程序也可能返回Wrong Answer.
Runtime Error (RE): 你的程序在执行过程中崩溃了. 可能的原因包括:非法文件访问,栈溢出,数组越界
,浮点异常,除零运算等等. 程序长时间不响应也可能被认为是发生了Runtime Error.
Time Limit Exceed (TLE): 你的程序运行的总时间超过了时间限制.每个题目有2个时间限制,即TOTAL
TIME LIMIT(总运行时间限制)和 CASE TIME LIMIT(一次运行时间限制).前者是你的程序运行所有的
输入文件数据的总时间限制,后者则是运行单个数据输入文件的限制. 两者之中只要有一个超时,就会导
致判答Time Limit Exceed. 如果你的程序被判答Time Limit Exceed,但是并没有超过总运行时间限制,
那就说明你的程序超过了一次运行时间限制.
如果题目没有特殊说明CASE TIME LIMIT, 那么将默认设置为与TOTAL TIME LIMIT相同的值,并且不会在
题目中显示出来.
Memory Limit Exceed (MLE): 你的程序使用的最大内存超过了内存限制.
Output Limit Exceed (OLE): 你的程序的输出超过了文本输出大小限制.目前文本输出大小限制被设置
为标准输出大小的2倍.最主要的原因是你的程序在包含输出的语句中陷入了无限循环的错误.
Compile Error (CE): 编译器在编译你的程序的时候发生了错误.警告信息不会被认为是错误.单击POJ对
你的程序的判答结果,可以看到编译器产生的错误和警告信息.
No such problem: 你提交的程序不存在或者不可用.
System Error: 你的程序无法运行.举例:你的程序需要比当前硬件条件下的内存多得多的空间.
Validate Error: Speical Judge程序无法正确检验你的输出文件. 可能是Special Judge程序有错.如果
你的程序被判答Validate Error,请尽快通知管理员.(当然,这也意味着你的程序很可能是错误的).
________________________________________
问题: Special Judge的题目有什么不同?
解答: 但一个题目可以接受多种正确答案,即有多组解的时候,题目就必须被Special Judge.
Special Judge程序使用输入数据和一些其他信息来判答你程序的输出,并将判答结果返回.
________________________________________
问题: 如何确定程序读入的终止?
解答: 大部分情况下,题目会在input中清晰地描叙输入数据如何结束,比如,test cases的数目或者一
行全零的数据,等等.但是,有时候你必须用EOF结束符来确认文件的结尾.在这种情况下,你必须检查
scanf的返回值(返回有多少个值被成功的读入或者为0时返回EOF),对于cin,则可以类似的通过 !cin来
确认.你可以参考Problem 1001的Hint进一步了解如果确定程序读入的终止.
________________________________________
问题: 为什么我的程序在GCC/G++ (C/C++)下被判成WA/TLE/RE,但是在C/C++ (GCC/G++)下被判成AC?
解答: 很可能是因为你的程序里的一些微小错误在不同编译器的因素下导致的不同判答。我们建议您仔
细检查您的代码以找到错误。另外一个可能的原因就是不同的编译器往往使用不用的函数,库,和设置
来生成可执行文件。所以在特殊情况下,有可能不同编译器下生成的可执行程序会有不同的执行效率或
者执行结果。比如,MS-VC++的栈的大小比在G++下的栈要大。一个具有很深的递归的程序就可能出现暴
栈的情况。如果你很肯定地认为你的程序在不同编译器下判答的差异是由编译器造成的,请联系我们。
________________________________________
问题: 有些题目的时间限制是1秒,但是有些程序却以几秒的时间AC了?
解答: 大部分这样的程序是Java程序。众所周知,Java程序的运行速度比C/C++程序要慢很多。所以对于
Java程序的时间限制也要长于普通时限。确切的说,Java程序允许运行的运行时限是普通时限的3倍。而
且给于150MS的多于时间作为I/O速度慢的补偿。如果你的程序不满足上述条件,请联系我们。
________________________________________
问题: 我的程序仅仅超过时间限制15MS,我该怎么优化程序呢?
解答: 大部分情况下,你的程序实际上需要比时限多较多的时间来运行。POJ会在题目的时限到达的时候
自动终止你的程序。通常超时的程序会显示超过时限15MS。一般的优化程序技巧包括缩小算法的常数和
采用更加有效的算法。
________________________________________
问题: 我还有其他问题?
解答: 您可以充分利用我们的BBS系统来提问。请您用较和气的口吻来提问,管理员和其他人都会尽可能
来帮助你。
All Rights Reserved 2003-2006 Ying Fuchen,Xu Pengcheng,Xie Di
Tanslated by oyjpArt
Any problem, Please Contact Administrator
--oyjpArt
发表评论
-
POJ_1009_EdgeDetection分析
2011-09-13 10:04 1035题目是对RLE压缩的图像进行边缘检测。 RLE是游程编码的意 ... -
POJ_1008_MayaCalendar分析
2011-09-06 11:04 765POJ_1008_MayaCalendar分析 首先,我要骂 ... -
POJ_1007_DNASorting分析
2011-09-06 10:35 880POJ_1007_DNASorting分析 DNA序列由 ... -
POJ_1006_Biorhythms分析
2011-09-06 09:34 860POJ_1006_Biorhythms分析 每个人都有自 ... -
POJ_1005_IThinkINeedAHouseboat分析
2011-09-06 09:15 754POJ_1005_IThinkINeedAHouseboat分 ... -
POJ_1004_FinancialManagement分析
2011-09-06 09:07 622POJ_1004_FinancialManagement分析 ... -
POJ_1003_Hangover分析
2011-09-06 09:06 918POJ_1003_Hangover分析 题目是求要达到给 ... -
POJ_1002_487-3279分析
2011-09-06 09:06 896POJ_1002_487-3279分析 映射问题。规则简 ... -
高精度指数运算(POJ1001_Exponentiation)
2011-09-02 14:20 2179前言 第一次写技术博 ...
相关推荐
北京大学PKU JudgeOnline是一款在线编程评测系统,主要应用于教育领域,帮助学生进行编程练习和比赛。这个系统基于jsp(JavaServer Pages)技术开发,并利用MySQL作为数据库存储数据。以下是关于这个系统的详细知识...
Problem Set is the place where you can find large amount of problems from different programming contests.Online Judge System allows you to test your solution for every problem. First of all, read ...
程序已经通过PKU JudgeOnline测试。非常适合选修《程序设计竞赛》同学的期末考试。
【标题】"pku.zip_PKU" 指的是一份与北京大学(Peking University, PKU)相关的压缩文件。从描述来看,这份压缩包包含了部分编程题目的代码,可能是学生或者爱好者在解决北京大学编程竞赛或课程作业时编写的。"pku"这...
"pku经典题目解题报告"这一标题揭示了文件内容的核心,它表明这是一份关于北京大学(PKU)编程竞赛或算法竞赛中的经典问题的解答集。通常,这样的报告会涵盖一系列在PKU历年比赛中出现的难题,包含了解题思路、算法...
在编程竞赛的世界里,北京大学(PKU)的ACM团队以其高质量的题目和独特的解题思路闻名。"PKU-ACM.rar"这个压缩包包含了北大ACM题目的一些核心知识点,旨在帮助参赛者理解和掌握算法竞赛中的生命周期题目解法。本文将...
pku1000 pku1000程序 解题报告
描述中的"http://acm.pku.edu.cn/JudgeOnline/problem?id=3728"是一个链接,指向PKU的在线评判系统,这个系统用于提交和测试参赛者的程序代码。 标签 "pku_3621_pasc pku_3728" 暗示了可能存在两个不同的问题或挑战...
benchmark (PKU-MMD) for continuous multi-modality 3D human action understanding and cover a wide range of complex human activities with well annotated information. PKU-MMD contains 1076 long video ...
- **树形DP**:题目如[1947](http://acm.pku.edu.cn/JudgeOnline/problem?id=1947)和[1737](http://acm.pku.edu.cn/JudgeOnline/problem?id=1737)等,这些题目通常涉及树结构的数据,并需要利用树的性质来定义状态和...
【标题】"ACM代码 之pku代码" 涉及的是在计算机科学领域中的算法竞赛编程,尤其是北京大学(Peking University, PKU)的ACM/ICPC(国际大学生程序设计竞赛)训练代码。这些代码是参赛者或教练为了准备这类竞赛而编写的,...
标题 "pku acm 一些代码" 暗示了这是一个与北京大学(Peking University, 简称PKU)的ACM(国际大学生程序设计竞赛)相关的代码集合。在这个领域,参赛者通常需要解决算法问题,编写高效且优化的代码来求解数学、逻辑...
标题中的“pku1742.rar_pku 17_pku 1742 _报告及程序”表明这是一个与北京大学(Peking University, 简称PKU)相关的项目,项目编号可能是1742,内容包括了结题报告和程序代码。这个压缩包很可能是学生或研究人员提交...
标签部分进一步细化了内容:"pku acm_pku"再次强调这是北京大学ACM竞赛的资料,"pku__1709__crossword"可能是特定的题目标签,而"pku_acm"可能是北京大学ACM团队的标识。"visual_c"可能表示这些代码是使用C++语言,...
"p_acm"、"pku_acm"以及"pu_acm.pku_pku"等标签可能是用于分类或标识这些代码属于北京大学(Peking University, PKU)的ACM训练题目。"acm"一词重复出现,进一步强调了这是关于ACM编程竞赛的内容。 描述中提到"acmer...
标题"Pku1664"很可能是指北京大学(Peking University)在某个编程竞赛或课程中的一道题目或项目,编号为1664。这道题目可能涉及到计算机科学的基础概念,尤其是算法和数据结构。描述中提到的是"Pku1664源代码",暗示...
标题中的“pku1088.rar_pku 10_pku 1088_poj 1088”指的是北京大学(Peking University, PKU)编程竞赛中的第1088题,也称为POJ(Peking University Online Judge)的1088题。这个题目在编程竞赛社区中通常有一个特定的...
8数码代码pku1077,300ms(哈希+广度搜索)
分词训练用的pku训练集,主要是说明相似度计算的样例数据。