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)。欢迎一同讨论~

PC^2配置记录 (PC2 ACM)相关推荐

  1. Ubuntu16.04 配置记录(持续更新)

    Ubuntu16.04 配置记录 1.安装中文输入法 https://www.cnblogs.com/darklights/p/7722861.html 2.修改终端命令行路径长度 https://b ...

  2. vscode配置记录

    vscode配置记录 按照官网教程安装好vs:实际上只需要配置launch.json的"program"如下所示 "configurations": [{&qu ...

  3. openNebulafrontEnd ComputeNode 配置记录

    openNebulafrontEnd ComputeNode 配置记录 1,OpenNebula nfs(file system shared) for image datastore; openNe ...

  4. mysql slave 配置_【mysql5.6】 数据库主从(Master/Slave)配置记录

    freddon 发表于2018-04-01 阅读 661 | 评论 0 前一段时间迫于服务器的捉急内存,将redis数据库停掉了,鉴于redis的主从配置,在centos配置下mysql记录下过程. ...

  5. webpack4.0配置记录(2)

    接上一篇webpack4.0配置记录(1),继续记录学习webpack配置. 定义环境变量 new Webpack.DefinePlugin({//用来定义全局环境变量DEV:JSON.stringi ...

  6. CentOS 6.6下Redis安装配置记录

    这篇文章主要介绍了CentOS 6.6下Redis安装配置记录,本文给出了安装需要的支持环境.安装redis.测试Redis.配置redis等步骤,需要的朋友可以参考下 在先前的文章中介绍过redis ...

  7. Bandwagon的配置记录(二) —— ftp文件传输

    SSH登录服务器 登录的方法在Bandwagon的配置记录(一) -- kexue上网 配置前的准备 1.新建一个目录(  /home/ftp  ),以后可以把文件放在这里,这里相当于是个中转站 cd ...

  8. 【非原创】Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录

    Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录 从4月5日差不多开始安装,到今天4月15日,快两个星期了.如果加上之前自己看点Linux的时间,这折腾的有两个星期( ...

  9. Ubuntu20.04安装与配置记录

    Ubuntu20.04安装与配置记录 原文地址:Ubuntu20.04安装与配置记录 一.Ubuntu系统盘制作 1.1 Windows环境下制作系统盘 下载Ubuntu系统,选择桌面版. 下载工具系 ...

最新文章

  1. bzoj 1962: 模型王子
  2. 深度丨AI挑战人类情感!机器人写诗出书背后透露了什么?
  3. 如何在Java中选择Map/List/Set
  4. php 图片印章_PHP实现中文圆形印章特效_PHP
  5. FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...
  6. 转:在eclipse中搭建maven工程(第二种方法)
  7. 创建好centos7虚拟机之后连xshell连不上虚机
  8. 设计模式之 里氏替换原则
  9. 信息系统项目管理师论文历年题目2005-2020
  10. python语言程序设计实践教程实验八答案_清华大学出版社-图书详情-《Java程序设计教程及实验指导》...
  11. php monolog 使用,PHP 依赖工具 monolog的使用
  12. 矩阵乘法 算法训练 试题_计算方法练习题及答案汇总(共八套).docx
  13. 微PE装Win10详细教程 手把手教你UEFI+GPT方式安装Win10系统教程
  14. 工业物联网·工业数据采集网关-光伏物联网解决方案
  15. android 画尖角气泡,Android 实现气泡布局/弹窗,可控制气泡尖角方向及偏移量
  16. 201771010112罗松《面向对象程序设计(java)》第十六周学习总结
  17. gc算法 java_Java的GC机制及算法
  18. CPS基本概念(信息物理融合系统)------1
  19. 从ELK/EFK到PLG – 在EKS中实现基于Promtail + Loki + Grafana容器日志解决方案
  20. aur打包linux微信,ArchLinux微信、TIM安装与乱码解决方法

热门文章

  1. C++学习网站 -收录
  2. HTML5移动的代码,HTML5实现一个能够移动的小坦克示例代码
  3. 处理使用ByteArrayOutputStream读取文件中文乱码情况
  4. FineUI grid列表拓展列
  5. 测试的具体工作流程是什么?
  6. 用纯CSS画一个萌萌哒的QQ企鹅
  7. swiper 点击切换轮播图实现
  8. 软件工程使用软件和软件所能画的图
  9. laravel-实践
  10. java后台生成微信二维码,打不开图片