编程竞赛控制系统PC2客户端使用说明
时间:2010-03-27 来源:scutacm
PC2客户端是编程竞赛中参赛队员使用的客户端程序,具有提交题目答案(源代码)、测试答案、查看评判结果、提问等功能。
1. 启动客户端
进入文件夹C:\pc2\,打开文件pc2team.bat,启动程序后可看到登录界面:
图 1 登录界面
在登录界面上输入用户名和密码,请注意区别大小写。用户名和密码在比赛前由主办方提供。 登录成功后则进入主界面,如下图所示:图 2 主界面
若比赛还未开始、比赛中止、比赛已结束,则在主界面上方会提示红色大字体“STOPPED CONTEST IS NOT RUNNING.”。如果比赛正在进行,则在左上方提示剩余时间。
图 3 比赛剩余时间提示
客户端主界面一共有四个页面:(1) “Submit”页面:用于提交题目的源代码答案和本地编译测试源代码。
(2) “Clarification”页面:向裁判提问,沟通交流。(3) “Runs”页面:查看每次提交答案的评判结果。Status为“Yes”表示答案正确,解题成功。
(4) “Setting”页面:修改用户密码。
2. 提交答案
在主界面“Submit”页面上,您可以提交对某道比赛题目的解答情况,上传源代码文件。系统会自动帮您编译源代码,运行编译后的程序,验证运行结果,以确定源代码是否正确。必要时裁判人员会帮您手工评判。 提交答案的步骤如下:(1) 在“Problem”下拉框中选择您要解答的题目。
(2) 在“Language”下拉框中选择您使用的编程语言,默认提供C++、GNU C++、GNU C、Java四种选项。
这里的语言指的是系统所采用的编译平台,C++使用Visual C++ 2005编译器,GNU C++使用G++编译器,GNU C使用GCC编译器,Java使用Javac编译器。C/C++编译器支持C99标准语法,Java编译器使用的JDK是JDK 1.6。
您应根据源代码语言选择对应的选项(编译器):① C++语言:选择“C++”或“GNU C++”。
② C语言:选择“C++”或“GNU C”。(Visual C++ 2005编译器支持C语言)
③ Java语言:选择“Java”。
(3) 点击“Select”按钮,选择您要提交的源代码文件(对应所选题目)。
如果您的源代码文件有多个,请先用“Select”按钮选择包含应用程序入口函数(main)的主文件,再点击左下角的“Add”按钮添加其余文件。“Remove”按钮可以移除附加文件。
注意不能提交任何数据文件或编译后的可执行程序文件。 (4) 点击“Submit”按钮,提交源代码。提交前系统会弹出提交提示框(“Run Submission Confirmation”),请您确认您要提交的内容:图 4 提交确认窗口
若您确认无误,则点击“Submit”按钮,否则按下“Cancel”按钮取消提交。提交成功系统会返回一个消息提示:
图 5 提交成功提示窗口
成功提交后,系统会尽快评判您的答案,包括编译代码、运行程序、验证结果等过程,然后以消息提示框的方式通知评判结果。若答题通过,则返回的结果(Judge’s response)为“Yes”,否则返回其他错误提示(以“No”开头)。
图 6 评判结果提示窗口
评判结果一般可分为四种:
评判结果 | 说明 |
Yes | 解题正确 |
No - Compilation Error |
错误原因:编译错误 |
No - Run-time Error |
错误:程序运行错误 |
No - Time-limit Exceeded |
错误:运行超时(每道题都有运行时间限制) |
No - Wrong Answer |
错误:运行结果与标准答案不一致 |
No - Excessive Output |
错误:程序运行占用内存空间超出要求 |
No - Output Format Error |
错误:输出格式错误 |
No - Other - Contact Staff |
未知错误 |
系统并不限制每道题的提交次数,若您提交某道题的答案后系统返回错误提示,您可修改源代码后继续提交,但一般情况下请尽量保证您提交的代码是正确无误的(可使用“Test”功能在本地测试一下)。因为提交的错误次数将会影响您的最终排名(系统评分机制请看第7点)。
3. 查看每次做题情况
在“Run”页面可以查看每次提交答案对应的评判结果:图 7 提交和评判结果历史记录
上图的表显示了每次提交的ID(Run Id)、题目(Problem)、解题时间(Time,从比赛开始算起,单位分钟)、评判结果(Status)、编程语言(Language)。
4. “Test”功能
若您想在正式提交答案前模拟一下系统评判的编译环境,测试一下您的代码,您可以使用“Test”功能。“Test”功能将使用与裁判端一致的编译环境编译您的代码,在本地机子运行编译后的可执行程序,并输出运行结果。
“Test”功能使用如下:在“Submit”页面选定题目、语言、源代码文件后,点击“Test”按钮,在弹出的对话框选择测试所用的输入数据文件:图 8 选择测试输入数据文件
该测试数据文件是一个Ansi格式编码文本文件,其内容要求与题目输入数据格式一致,一般需要参赛人员自己编写。一个简单快速的方法是您将题目描述中的 “Sample Input”(输入示例)“拷贝”到一个txt文件中,然后选择该txt文件。
若比赛官方有说明,则会在一个URL地址(比如ftp://222.201.145.177/testdata/ )中提供这些测试数据样例的下载。
选定测试数据文件后,系统会帮您编译代码,并给出输出结果或错误内容提示:
图 9 测试输出结果
5. 提问功能
若您对某次评判结果有疑问,可以在“Clarification”页面中提交您的问题,裁判或主席团将酌情给予解答。 “提问”使用过程:点击“Requst Char”按钮,在提问窗口选择题目,编写您的问题后提交。图 10 编写问题
您需要在问题中说明具体某次提交的Run Id,详细地说明问题内容,否则裁判难以帮您解答。一般情况下,若返回的评判结果是“No - Other - Contact Staff”,才建议您使用提问功能。(其他结果能很明确地说明您的答案有问题)
6. 退出客户端
点击主界面右上角“X”按钮或“Exit”按钮。7. 比赛排名机制
PC^2系统排名机制:
(1) 解答正确的题目越多,排名越高。
(2) 正确数目相同时,罚时越少,则排名越高;只从正确解答的题目中罚时,解答错误的题目不罚时。 系统根据以下两方面计算罚时的分数:i. 从比赛开始,到首次提交某道题正确的答案时,每过一分钟,便从该道题目罚一个分数,但不包括裁判评判答案所花的时间。
ii. 每提交一道题目的错误答案,都会罚一定的分数(默认是20,与ACM/ICPC正规比赛相同);提交正确答案后,若再次提交这道题的错误答案,则不罚时。(3) 如果有两支队伍的正确数目相同,罚时也一样,则看哪支队伍最后一次提交正确的答案比较早,则这支队伍的排名较高。
参赛队伍可以在官方提供的网址查看每支队伍当前的解题情况,例如:ftp://222.201.145.177/Scores/summary.html
8. 注意事项
(1) 登录不成功,出现以下提示: l “Could not contact server,please contact staff”:主机不能连到服务器(网络连接、防火墙等因素),或者比赛未开始。请检查网络连接、防火墙等因素,若有必要则换主机使用。l “Invalid Login”:用户名或密码错误。若忘记用户名或密码,请联系比赛主办方人员处理。
l “Aleady Logged In”:用户已经登录。请确保用户名正确且无重复登录,若之前您已经在另外一个客户端登录系统,请先退出后再登录。若因机子突然死机、断网、客户端程序崩溃等意外原因导致不能正常退出系统,请联系比赛主办方清理您的登录状态,再重新登录。
(2) 主界面上方若出现“Problem submitting run – contact contest staff”红色字体提示:图 11 客户端提交异常提示
则请退出客户端重新登录。
(3) 评判结果显示编译错误,但在本机能编译成功,一般这种情况的原因是您的代码不符合编程语言的标准语法要求,而所使用的IDE也不支持新的语法标准。比赛要求提交的C/C++代码符合C99标准。
一个典型的例子是for循环体内声明的变量作用域在循环体结束后已经不存在,比如(for int i=0;i<10;i++),变量i在for语句结束后将不起作用。
预防这种错误的一个方案是使用支持C99标准的IDE,例如使用Visual C++ 2005,而不是Visual C++ 6.0。Visual C++ 6.0只支持C89标准,不支持C99标准。
您也使用客户端所提供的“Test”功能,测试您的代码是否在系统编译环境下能否编译成功。(4) 比赛官方博客地址是:http://scutacm.cublog.cn 。比赛说明、试机题目及其他信息都会在这个博客上以文章方式公布,请注意查看。