跳到主要内容

计分系统

CBCTF 支持三种计分类型,可在比赛中对每个 flag 独立配置。

计分类型概览

类型score_type特点
静态分数0固定分值,不随解题人数变化
线性分数1每多一人解题,分数线性递减至下限
对数分数2前期降分快,后期趋于平稳,最真实的 CTF 体验

参数说明

参数默认值说明
Score1000初始分值(第 0 人解题时的分数)
MinScore100分数下限,解题人数再多也不低于此值
Decay50衰减控制参数(含义因类型而异,见下)

静态分数(Static,type=0)

score = Score

分数固定不变,不受解题人数影响。

示例:Score=500,无论多少人解题,每人得 500 分。

适用场景:难度固定的题目,或不希望使用动态计分的比赛。

线性分数(Linear,type=1)

score = max(Score - Decay × solvers, MinScore)

其中 solvers 为解题人数,Decay 为每多一人解题扣除的分数。

示例(Score=1000,MinScore=100,Decay=20):

解题人数分数
01000
10800
20600
40200
50+100(下限)

适用场景:竞争性较强、参赛人数较少的比赛。

对数分数(Logarithmic,type=2)

score = (Score - MinScore) × exp(-5/Decay × solvers) + MinScore

Decay 控制衰减速率,值越大衰减越慢。k = 5 / Decay

示例(Score=1000,MinScore=100,Decay=50):

解题人数分数(近似)
01000
10835
25669
50451
100202
200102

前期降分较快,后期趋于平稳。适用场景:大型 CTF 比赛,题目难度分布合理。

三血奖励(Blood Bonus)

当比赛的 blood 字段启用时,首血、二血、三血额外获得初始分的奖励:

名次奖励比例示例(Score=1000)
首血+5%+50 分
二血+3%+30 分
三血+1%+10 分

奖励基于 Score(初始分值),与当前实际得分无关。

多 Flag 题目

每道题可配置多个 flag,每个 flag 独立设置计分类型和参数,每个 flag 独立计分。

选手每次提交,平台实时重算该 flag 的分数并更新排行榜。

分数重算

每次有新的提交(无论对错),平台都会重算相关 flag 的当前分数。排行榜实时更新,无需等待。