PC^2配置记录 (PC2 ACM)

来源:互联网 发布:mac自带壁纸 编辑:程序博客网 时间:2024/06/06 01:50

PC^2是目前比较流行的一款举办ACM比赛的软件(实际上已经成为公认的软件了)。由于最近要开展预选赛,我们需要对PC^2进行配置。

首先去PC^2官网,下载PC^2套件。

下载后解压,配置pc2v9.ini,将服务器的IP地址填入到site1中。保存,复制一份到同目录的bin文件夹下

选择一台稳定的服务器,用作比赛主服务器,在这台服务器上启动pc2server,这是整场比赛的数据中心点。(PC^2的概念中把这台服务器成为一个Site,大概一个Site对应一场比赛)。启动后输入默认用户site1,默认密码site1,弹出设置密码的窗口,设置整场比赛的密码,确认即可。

如果条件允许,选择另一台机器用作管理员服务器。在这台机器上启动pc2admin,这是管理比赛的程序。默认账户root,默认密码administrator1。登录后可以在Change Password选项卡更改密码。在pc2admin的Configure Contest选项卡中选中Problem,点击Add按钮添加题目。Problem Name就是选手在选择题目时显示的名字,ShortName就是ACM惯用的题目序号(A,B,C...)。时间限制(time limit)的单位是秒。数据输入方式选择STDIN (ACM比赛中禁止文件读写,即freopen是不需要的,但是如果举办NOIP那样的比赛,需要选择file的输入方式)。如果 该题目有输入数据,则勾选,并选择数据输入文件。勾选题目有输出数据,选择标准数据输出文件。切换到下一个选项卡,如果希望自动判题的话,选择Computer Judge,如果希望在自动判题后人工审核,则勾选manual review... 否则选择Manual Judge进行人工判题。切换到Validator选项卡,选择验证器为diff(除非有特殊要求,否则应该选择这个验证器保证结果完全符合答案)。最后一个选项卡仅在这个题目有多组测试数据时使用,这时点击下方的Load按钮选择数据文件,需要注意的是输入文件后缀名为in,输出文件后缀名为ans(必须是ans!)一个比较坑的地方是一旦导入数据文件就不能再删除了。另一个比较坑的地方是一旦题目确认导入了,也不能删除了(不过可以通过隐藏等方式实现“删除”,对于强迫症来说可能需要在比赛服务器(site)上运行pc2reset重置比赛了...)。 依次添加题目。接下来切换到Configure Contest下的Accounts选项卡,使用Generate功能批量生成账号,Team是选手账户,Judge是判题账户,Administrator一般不用再生成了,ScoreBoard是排行榜账户(一个就够)。生成后默认密码和账号是一样的,需要手动去改...(坑)。需要注意的是Generate对话框不会自动关闭,一般点击确认生成一次就行(除非PC2卡了)。接下来进入Configure Contest下的Auto Judge选项卡,配置自动判题。PC2貌似只能按照题目分Judge机,在这里选择Judge,选择Edit,在弹出对话框中选择希望送往这个Judge机的题目,记得勾选Enable Auto Judge,点击Update确认。

选择一台或多台服务器用作判题机。在这些机器上启动pc2judge,这是接受题目并在本地判题的程序。登陆后一般不需要再进行配置,保持登录即可。需要注意的是,测试数据不会由PC2分发,因此需要将所有测试数据拷贝到所有运行pc2judge的机器上再启动pc2judge。当判题程序启动时如果没有发现已在pc2admin中配置的测试数据,pc2judge将拒绝启动,此时会提示缺失的数据文件,按照提示补充上即可。在这场选拔赛的过程中,我们遇到了很多问题。坑一:输入数据末尾需要换行,否则会卡死judge程序(超时),或者造成答案错误等结果。坑二:pc2不自动判题,出现QUENED_FOR_COMPUTER_JUDGE,此时无法自动判题,也无法手动判题。原因尚不明确,但是重启pc2judge就能解决这个问题。需要注意的是,pc2judge的设计中,同一时间同一客户端只能判一道题目,也就是说在你手动判一道题的时候,pc2judge是不会进行自动判题的,必须关闭这个判题窗口才行。几个选项:Request Run(对状态为NEW的程序进行判题,如果正在自动判题或者已经启动了一个手动判题,则本次启动将会失败:标记为一行文字...。对状态不是NEW的程序Request Run将不会有效,标记为一行文字(Status not 'NEW')。弹出的窗口中选择Execute Run来执行选手提交的程序,程序运行后会弹出一个结果比对窗口,点击Close关闭或者点击选项查看具体内容,如果这个结果比对窗口什么都不显示,右上角显示为ERROR,那说明pc2judge又卡死了....这时需要重启pc2judge。 判题成功后选择Accept validator 接受判题结果,或者手动选择一个结果后Accept Result,可以选择是否通知队伍。即使不通知队伍,参赛队员也能通过提交记录查看提交状态),Rejudge(重新判题,会弹出一个和Request Run弹出的一样的窗口)。PC2不支持中文输出,因此测试输入和输出都不应该有中文,包括任何中文标点符号。另外,如果你打算在Windows环境下举办比赛,最好在Windows下生成数据,如果在Linux环境下举办比赛,最好在Linux环境下生成数据。虽然dos2unix,unix2dos命令或PC2能解决这个问题,但是最好还是在源头就避免这个问题。

选择一台机器用作榜单查看服务器,在这台机器上启动pc2board程序,登录(注意默认账号和密码是scoreboard1而不是board1)。登陆后会在pc2的bin文件夹下生成一个html文件夹并间隔的更新这个文件夹里的内容。在这台服务器上开启Web服务,将这个html文件夹链接到web服务器根目录(例如/var/www/html -> /home/ubuntu/pc2/bin/html这样). 修改完成后,将IP地址随账号,题目等一同分发给参赛选手即可。PC2默认提供的排行榜功能很基础,只有榜单查看的价值(不过已经自带了自动刷新)。如果希望美观一些,可以另外编写程序实现。

以上就是这次配置PC^2的一点记录,配置过程中没怎么百度,都是看PC2的官方Guide一点点配置的。官方Guide分为AdminGuide,JudgeGuide和TeamGuide,分别是配置与管理手册,判题机配置手册 和 选手客户端配置手册。英语好的同学建议直接看Guide,内容很详细,能避免很多问题。另外PC2的bugzilia上列举了目前已知的bug,稍微看看的话能少走很多弯路。

PC2在很多地方都不是那么完美,不人性化,甚至有点反人类(比如添加的账户不能删除等等...),最大的弱点应该是Site服务器,如果Site服务器挂掉那么整场比赛就陷入停滞了。另外PC2除Server账户外,所有账户原则上都没限制多处登录(正常情况是在另一处登录,原来登陆的客户端会显示Shuting down in XII seconds...之类,但是有时候原来的客户端可能不会退出,这时原来的客户端,新登录的客户端和Site服务器都会卡死,尤其是Site服务器可能会完全卡死...),因此需要避免同一账户在不同地方登陆。

为了更好的比赛体验,更便捷的比赛环境搭建,我们启动了一个名为Yui Project的计划,旨在提供一个简单易用,用户友好的竞赛解决方案。现已开源于GitHub,采用Apache-2.0协议。点击此处查看GitHub上的Yui 欢迎加入Yui-Project!

有关PC2的配置问题,可以发送邮件到我的邮箱(1362050620@qq.com)。欢迎一同讨论~ 


0 0
原创粉丝点击