ACM-ICPC现场赛管理员指南

ACM-ICPC现场赛管理员配置指南---华东理工大学上海邀请赛总结

0. 说点什么呢

其实所有机器其实都很稳定,人品有多差才会让一个机器崩溃呢,不过重要机器备份还是要做,毕竟比赛重大。Ubuntu镜像下载地址http://mirrors.163.com/ubuntu-releases/12.04.5/(服务器下64位server版,其它机器下32位desktop版),下载之后用win32diskimager制作U盘启动盘。(之后可以用大白菜将U盘还原)

1. 服务器搭建

这次比赛我们有一台服务器,一台备用服务器。服务器装的是Ubuntu 14.04LTS server版,服务器的安装是十分简单的,并且不需要给服务器联网安装其他软件。就比赛而言,只需要用U盘导入一个5M多的pc2的压缩包就行了。我们这次用的是pc2-9.2.4 。它的一个安全问题给判题系统带来了一点点小小的麻烦。不过,只要裁判稍加注意就行了。服务器版默认安装了java python等软件,但是没用安装gcc,不过没有关系,要让服务器联网是有一些麻烦的,因为大家在学校一般需要校园网认证,客户端认证时相当麻烦的,如果是网页验证需要学校给一个认证脚本。起初我想离线安装w3m文本浏览器来完成网页认证,不过它的安装是依赖gcc的,我又去离线安装gcc,问题在于它依赖低版本的c编译器。然后我就无语了,后来发现完全没有必要这么折腾。

总之,服务器安装好Ubtuntu 14.04 LTS之后用U盘导入pc2-9.2.4 .tar.gz(压缩包中有)解压出来就可以了。细节:插入U盘之后,可以用mount -t -vfat /dev/sdb1 /mnt 将U盘挂载到/mnt下(如果只插入一个U盘一般在/dev/sdb1中,多个的话可能在/dev/sdc1等目录下,插入U盘前后调用cat /proc/partitions来查看此U盘的路径),特别注意/mnt文件夹下是不允许解压的,即使使用root权限也不行。将/mnt 文件夹下的pc2*.tar.gz复制到别的目录下,例如当前用户的目录下(
cp pc2*.tar.gz ~/ )然后进入~/目录,使用tar -zxvf pc2*.tar.gz 解压文件。十分简单。当然,要增量备份来完成该服务器向备用服务器的数据copy。当服务器崩溃是,马上转换服务器(服务器一般都很稳定的,上辈子做什么孽才可能搞崩服务器呢,另外如果断电了服务器也会比客户端多撑几秒,总之,服务器十分稳定,不过备份工作还是要做的)最后,客户端必须跟服务器在一个局域网内才能连上服务器,一般大家在学校可以连校园网的网线,DHCP分配IP,不过这样服务器关机了后IP可能会变,有一点麻烦。比赛现场搭环境之前肯定需要约定好服务器IP,打印服务器IP,榜单IP。以及所有客户端的IP的设置规则。因为比赛一般是200个队伍,所以C类网络就够用来。子网掩码可以设置成255.255.255.0

2. 客户端搭建(以下内容默认有图形界面)

客户端安装,首先我们不可能每台机器都装一次Ubuntu

一般学校机房都是有装万欣恢复卡的。版本不同操作也不同,如何用万欣恢复卡装系统,以及如何系统备份,如何系统还原,如何发射,这些可以问本校计算中心的老师。在此之前,可以先在自己电脑上装Ubuntu来学习pc2软件。

装ubuntu最好选择LTS版,而且最好装去年或者前年的,我们这次选择的是Ubuntu 14.04 LTS(2015年final也是装的这个版本),客户端当然装的是desktop了,一般学校机房内存4g,所以装64位的。

安装还是很简单的,但是恢复卡安装Ubuntu可能有些不一样,最好在计算中心的指导下安装。安装系统之后就开始设置网络(网上资料都比较齐全),在线安装软件了。以下针对Ubuntu 14.04 LTS来讲:

desktop默认安装了gcc和python

安装其它软件前使用sudo apt-get update更新源

完成后用sudo apt-get upgrade更新依赖库,之后就可以安装软件了。

用sudo apt-get intall g++ 安装g++

openjdk-7-jdk,vim-gtk安装类似。

安装完编译器之后就开始安装编译器了,codeblocks,Eclipse可以直接在ubuntu软件中心中安装,Eclipse版本会很低(不过无所谓,安装时记得勾选cdt就行了,因为部分队伍喜欢用Eclipse写c,c++)。ubuntu软件中心安装的netbeans安装会导致无法使用,可以在官网安装稳定且最新的版本,安装十分简单,但是最好前面加sudo命令安装,这样安装的目录就不是在home文件夹下,而是在/etc等文件夹下。默认安装netbeans是不会在桌面显示图标的。可以到/usr/shar/applications中找到netbeans图标。将其拖到桌面或者启动栏。在pc2官网下载与服务器版本一致的pc2。大体客户端的软件安装就告一段落来。

3.pc2配置(约定pc2为pc2文件夹所在目录)

[服务器]

解压pc2后进入pc2文件夹,你可以看到pc2v9.ini文件,如果是单服务器,该服务器可以不用改这个文件,但是客户端必须改这个文件。另外为了方便,最好将pc2v9.ini文件copy到bin文件夹中。进入bin文件夹,根据服务器内存修改pc2server xms xmx(xms默认是64M,xmx默认是6400M,为了使用更好的服务器性能,可以将xms设置成服务器内存的1/16,xmx设置成1/2) 运行./pc2server --nogui --login site1 --password site1
--contestpassword 123456打开pc2服务器

服务器就开启了,其实./pc2server就可以开启服务器,但是考虑到服务器一般都是没有图形界面的,因此就只能使用上述命令了,其中site1 site1是服务器默认的账号密码,123456是用户设置的密码,主要用于服务器关闭再次进入需要的密码以及,压缩包解压的密码。

至此服务器的配置就完成了。

[客户端]

进入pc2下面的bin文件夹可以看到很多文件,其中pc2admin是管理员端,pc2judge是裁判端,pc2team是服务器端。这三个端全都是客户端,只是功能不一样而已。进入pc2将pc2v9.ini文件修改中localhost改成服务器的IP。将pc2v9.ini文件复制到bin文件夹下,运行./pc2admin 进入登陆界面(请保证服务器开启)。账号密码默认为 root administrator1,比赛前别忘了修改root密码。这时你就可以产生账号了,例如10个judge,200个team,2个scoreboard。此后team和judge就可以登陆了。默认账号密码是一致的,例如team1,team1

judge1,judge1,scoreboard1,scoreboard1。要正式配置比赛,需要配置语言(使用默认的C,C++,java就可以了)。设置语言,等等一系列的操作,作为管理员当然要详细的看完pc2的官方文档,在pc2/doc就能看到文档。这里就说一些比较麻烦的地方:

1.有些题目需要配置special judge(文档有写),一定要按照文档的说法来,错一个字符都无法使得机器自动判题。

2.打印服务,打印服务是有ccpc做的,默认账号admin密码ccpc2015cn。(使用是十分方便的)

3.榜单,在pc2/bin/html下会默认生成一些榜,可以使用summary.html作为队伍们可以看到的榜。在/pc2/bin/html文件下调用python -m SimpleHTTPServer 8000(大于6000就行,随意),其它地方用火狐输入榜单ip:8000/summary.html就可以看到榜了。

4.为了方便队伍端使用,可以用写c编译放在桌面,方便队伍使用pc2以及打印,看榜服务。

说一下IP设置,可以让前20个ip分给服务器和裁判机器。当然裁判机器可以看作与队伍机器等价。这样前10个ip流出来就够了。比如10.0.0.10给管理员(最好把榜单和管理员放在一台机器上,这样做很方便,并且不要让管理员判题,防止崩溃)。9给服务器,8给备用服务器,7给打印机,至少要有两台机器配有打印机程序,用只要用一台就可以了。2-6留用(1是网关,255是广播)。11-254可以分给裁判(如果是手动设置IP11-20就分给裁判比较好)和客户端。

说一下打印机,大家可以买3-5台hp打印机,ubuntu是默认有hp打印程序。将打印机插上,在打印服务器(任何Ubuntu desktop的电脑都行)可以用dpkg- l hplip查看打印程序内核,用hp-setup安装打印机。

安装好之后在设置中点打印机,add中有两个选项,其中一个就是class,设置一下就行了,并将这个class设为默认打印机。利用lp filename看是否可以打印,可以连接几次这个命令看多打印机协同工作是否正常。(这只是完成了离线打印)下面介绍一下网络打印。ccpc提供了该网络打印的程序。见网址:

在打印服务器上安装网络打印的程序。运行相应命令。完成之后,由管理员创建相应账号(账号密码最好跟pc2的队伍账号密码一致,并且加一个测试打印的账号例如team999)其它机器只需输入打印服务器的网址加端口号就可以了。操作十分简单不多说了。

如果约定了打印服务器的ip,榜单ip那么队伍机器的设置就可以完成了,就可以进行机器的发射工作了。至于打印和榜单服务器的配置以及pc2服务器的配置都与队伍机器独立。一般队伍端桌面有三个程序:打印,榜,pc2

这些程序都可以用c来写(见附录)

现在的工作就是管理员如何配置打印服务器,榜单显示,还有气球提示功能了。

讲讲pc2本身用法吧。

pc2服务器开启后,pc2admin就应该设置 账号,语言,题目,题目对应的气球以及气球设置,比赛名设置,裁判可以看到的信息设置,默认回复设置,auto judge设置。设置好之后可以点time中的start ALL button

比赛开始后,基本管理员和裁判前10分钟会比较闲,之后就开始忙碌了,注意每一个autojudge至少要保证一个没崩溃,不然就有些麻烦了,记得1小时前封榜(只关一个榜,管气球的榜不要关了。)。最后的10分钟超级忙碌,不过也不要慌乱,判题有延迟也无所谓的,只要不判错就ok。判完题后可以开启关闭的榜,进行更新榜单。至于滚榜这一点,我们没有做,实际上ccpc也做了这个程序,只是当时木有拿来。(很感谢周专家的帮忙和几位学长的帮忙)。

写的比较乱,区域赛再好好总结吧,http://pan.baidu.com/s/1pJHrp2r 可查看相应文件

时间: 2024-08-28 21:29:37

ACM-ICPC现场赛管理员指南的相关文章

2014 acm鞍山现场赛总结

好像大家都习惯打完比赛写总结,我也来水一发好了.. 记一下流水账,那么多第一次献给了acm,不记一下就白去那么远的地方了.. 首先比赛前网上买了机票跟火车票了.比赛前一天早上6点钟起来收拾东西6点半坐地铁去机场.第一次来机场,太高大上啦,感觉就像大乡里入城差不多,这里的随便一个做前台的英语都完虐我几十条街,领了个机票傻乎乎的过了安检去了机票口,提前来了半个钟,逛了下机场的商店,尼玛全都没写价格,一看就知道各种贵,只好路上拍拍灰机场,吃了点垃圾食品就上机了,上机五分钟前发现还有个候机宝的东西,尼玛

2018南京icpc现场赛心得

第一次参加icpc的比赛,也是第一块奖牌,虽然只是铜,但其实打的已经很好了,稍微差一点就可以摸银了. 之前参加省赛,成为那次比赛我校唯一一个没拿奖的队伍,其实还是一直都有一些心结的,而这段时间和新的队友的组队,虽然新队员的实力比之前的队友抢了很多,但是总感觉配合一直有问题,在比赛前一天的晚上,睡在一个房间里聊了很多话,也算是和队友真正达成了默契吧,所以第二天的现场赛配合的很好. 但是我自己在最近一段时间由于各种原因,其实个人的训练远没有之前那么多了,希望接下来能调整自己的训练,争取能在青岛站给奖

2012 ICPC/ACM 成都现场赛 Candy

题目来源: http://acm.hdu.edu.cn/showproblem.php?pid=4465 题意:输入m,p;从两个盒子里各有n颗糖,每天取一颗,发现其中一个盒子空,求另外一个盒子糖果数的期望.p,1-p为取糖概率: 分析: 给盒子编号 A,B , 设另外一个盒子(为B) 剩  n - k 个 , 则 在过去的 (n + k)次 有 k 次 取到B , 且当前这次取到A . 同理 对另外一个盒子为(A) . 则 期望的公式为: Σ( n - k) * C(n + k , k) *

2013 年 acm 长春现场赛

A - Hard Code Hdu 4813 题目大意:给你一坨字符串,让你输出其栅栏密码的解码形式 思路:水题模拟 1 #include<iostream> 2 #include<cstdio> 3 #include <math.h> 4 #include<algorithm> 5 #include<string.h> 6 #include<queue> 7 #define MOD 1000003 8 #define maxn 20

2014 ACM 上海现场赛B,I,J &amp;&amp; UVALive7146 7147 7139

2014最难赛区 7146 贪心这道题是考验STL的. 我们按照一个顺序排序(我方攻击力升序,敌方防御力升序), 此时因为要全部歼灭,优先考虑如何干掉敌方防御力最高的,此时将所有攻击力比它高的我方都放入multiset中维护,然后选择一个"最合适"的匹配(如果有我方防御力大于此时敌方攻击力的元素就使用,若没有就牺牲.首要任务是全部歼灭,此时能够消灭这个敌方的人都已经在multiset中了,若能够不牺牲却让其牺牲是不必要的,因为后面的元素已经保证能够歼灭后面的敌方) #include&l

2016 ACM/ICPC 区域赛(北京) E 题 bfs

https://vjudge.net/problem/UVALive-7672 题意    输入一个五位数n 问由12345变到n的操作最少次数 不可达输出-1 有三种操作 1.交换相邻的位置 次数不限制 2.使某一位上的数字+1   最多使用三次 (mod 10) 3.使某一位上的数字*2   最多使用两次    (mod 10) 解析 很容易想到预处理,然后O(1) 查询,操作次数最少,所以就bfs,一层一层向外拓展. 需要注意的是 一个数被访问过还可以再被访问(进队列),因为得到一个数可以

【2019.07.04】2018南京icpc现场赛

补题地址:https://www.jisuanke.com/contest/1847?view=challenges A:? B CDEF G:? HI:?J:? KLM 原文地址:https://www.cnblogs.com/ncu2019/p/11142346.html

2013 ACM/ICPC 长沙现场赛 A题 - Alice&#39;s Print Service (ZOJ 3726)

Alice's Print Service Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is providing print service, while the pricing doesn't seem to be reasonable, so people using her print service found some tricks to save money. For example, the price when

2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5984 Pocky 题意 给出一根棒子(可以吃的)的长度x和切割过程中不能小于的长度d,每次随机的选取一个位置切开,吃掉左边的一半,对右边的棒子同样操作,直至剩余的长度不大于d时停止.现在给出x和d,问切割次数的数学期望是多少. 解题思路 当看到第二个样例2 1时,结果是1.693147,联想到ln