如何创办一场算法竞赛

本文分享了如何创办一场算法竞赛的全过程,包括硬件设施(如服务器和测评机)、软件设施(使用domjudge系统和docker配置)、出题流程、平台测试和参赛选手的导入。详细阐述了每个环节的关键步骤和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学弟最近问我算法竞赛如何筹办,所以来写篇博客

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值