> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# 计分系统

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

## 计分类型概览

| 类型   | 特点                          |
| ---- | --------------------------- |
| 静态分数 | 固定分值，不随解题人数变化               |
| 线性分数 | 每多一人解题，分数线性递减至下限            |
| 对数分数 | 界面名称为“对数”，实际公式为指数衰减，逐渐接近最低分 |

## 参数说明

| 参数          | 默认值    | 说明                        |
| ----------- | ------ | ------------------------- |
| `score`     | `1000` | 初始分值；下文公式记为 `Score`       |
| `min_score` | `100`  | 分数下限；下文记为 `MinScore`      |
| `decay`     | `100`  | 通过界面加入比赛时的初值；下文记为 `Decay` |

`score_type` 为 `0`（静态）、`1`（线性）、`2`（对数）。`solvers` 指成功解出该 Flag 的**队伍数**，不是队员人数。所有计算结果先限制到最低分，再截断到小数点后两位；即使静态计分也受最低分约束。

## 计分类型


**静态分数**

### 静态分数
```
score = Score
```
分数固定不变，不受解题人数影响。
**示例**：Score=500，无论多少人解题，每人得 500 分。
适用场景：难度固定的题目，或不希望使用动态计分的比赛。


**线性分数**

### 线性分数
```
score = max(Score - Decay × solvers, MinScore)
```
其中 `solvers` 为解题人数，`Decay` 为每多一人解题扣除的分数。
**示例**（Score=1000, MinScore=100, Decay=20）：
| 解题人数 |      分数 |
| ---: | ------: |
|    0 |    1000 |
|   10 |     800 |
|   20 |     600 |
|   40 |     200 |
|  50+ | 100（下限） |
适用场景：竞争性较强、参赛人数较少的比赛。


**对数分数**

### 对数分数
```
score = (Score - MinScore) × exp(-5/Decay × solvers) + MinScore
```
`Decay` 控制衰减速率，值越大衰减越慢。`k = 5 / Decay`。
**示例**（Score=1000, MinScore=100, Decay=50）：
| 解题人数 | 分数（近似） |
| ---: | -----: |
|    0 |   1000 |
|   10 | 431.09 |
|   25 | 173.87 |
|   50 | 106.06 |
|  100 | 100.04 |
|  200 | 100.00 |
前期降分较快，后期趋于平稳。适用场景：大型 CTF 比赛，题目难度分布合理。


## 三血奖励（Blood Bonus）

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

| 名次 | 奖励比例 | 示例（Score=1000） |
| -- | :--: | -------------: |
| 首血 |  +5% |          +50 分 |
| 二血 |  +3% |          +30 分 |
| 三血 |  +1% |          +10 分 |

奖励基于 `Score`（初始分值），与当前实际得分无关。

## 多 Flag 题目

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

成功提交时会更新该 Flag 的当前分数、当前队伍得分和提交记录；周期任务继续校准其他队伍总分与排名，因此不同视图的更新不保证在同一时刻完成。

## 分数重算

平台通过定时任务进行分数重算，可在[定时任务管理](/guide/features/cronjobs.md)中配置运行间隔，以及是否在服务器启动时立即执行一次。
