学弟最近问我算法竞赛如何筹办,所以来写篇博客
1. 硬件设施
服务器,注意内存和带宽,我一直找学校老师要的校内服务器,4核20G内存,在100人同时使用时没压力
然后就是测评机,cpu的每个核心可以当一台测评机,校赛的时候我找了4台机房电脑,创建了8个测评机
如果要发气球的话提前买好气球核氦气罐
2. 软件设施
我们一直使用的domjudge作为比赛的测评系统
服务器用的ubuntu18.04,https://cndrew.cn/2020/07/05/domjudge/ 这里写的已经很清楚了,我没必要再写了
然后是测评机的配置,我发现了使用docker配置测评机更加简单,直接在dockerhub上搜domjudge,上边有官方群发布的测评机镜像,然后就是傻瓜式的配置
3. 出题
这里有一些出题脚本,首先是目录结构,每个题目有一个文件夹,内部data文件夹代表测试数据,里边有1.in文件,分别代表测试数据的输入
然后是两个文件夹out1和out2,分别代表两个对拍标程的输出,这里有一个检测两个对拍是否一致的脚本
import os
from time import *
os.system("g++ 1.cpp -o 1")
os.system("g++ 2.cpp -o 2")
L=os.listdir("./data")
for i in L:
os.system('1 <./data/'+i+'> ./out1/'+i.replace('in','out'));
os.system('2 <./data/'+i+'> ./out2/'+i.replace('in','out'));
L=os.listdir('./out1')
for i in L:
os.system('fc \"out1\\'+i+'\" \"out2\\'+i+'\"')
os.system("pause")
和一个造数据的模板
from random import*
def Gen(T):
F=open("./data/"+str(T)+".in","w")
for i in ran