# 普通高校招生录取流程

本文是本人对普通高校招生录取流程的整理，可能有误，欢迎指出。文中不涉及一些省份的特殊情况。

## 计划

计划指的是普通高校每年要录取的新生人数，每年提前制定好，计划的组成包括：

1. 普通招生，预先给每个省分配一部分计划
1. 预留计划，比例会在招生章程中公开，例如不超过 1%
1. 非普通招生，例如特殊类型招生，各种专项

计划数是公开的，每年可以在各省印发的大厚本中，查看本年某高校在本省各专业组计划招收的计划数。

计划数通常情况下只增不减，如果需要减少，涉及到教育公平，需要有合理要求，并经过教育部审批。当然了，如果招不满，也就是满足合理要求的考生数量不足计划数，是可以把计划挪到其他地方的。

因此高校会预留保留计划，从预留计划调整到各省招生计划是比较容易的。但保留计划的数量有限，例如清华招生章程中，写道：

```text
将招生计划总数的 1% 作为预留计划，用于调节各地统考上线生源不平衡。预留计划使用时，坚持规范有序、质量优先的原则。
```

需要注意的是，上述计划针对的是高校，而不是专业。这意味着，计划只限制了每年每个高校通过每个途径或者每个省份招收多少新生。但是并不限制专业，高校在每个专业录取多少新生的方面具有较大的自主权。

因此在大厚本里，各专业组的计划总数是可靠的，各专业的计划数是不可靠的：实际录取的每个专业的计划数和大厚本上写的很可能不一致，但总数应当是差不多的。

## 平行志愿

考生在高考出分后，需要填报志愿，每个志愿对应一个投档单位，也就是高校的某个专业组。例如物理组要求考生选择物理，物化组要求考生选择了物理和化学。专业组的制定取决于高校，高校会根据招生章程，制定各专业组。在大厚本上，也可以看到每个专业组内有哪些专业。

填报志愿时，每个志愿内包含该专业组内的多个专业，考生对专业进行排序，并可以选择是否服从调剂。

平行志愿的意思是，投档的时候，按照分数从高到低遍历考生，按照考生的志愿查看是否满足投档条件，如果满足，则投档到对应投档单位，结束投档过程；如果不满足，则检查下一个志愿。需要注意的是，投档的时候只看志愿，也就是专业组，而不看专业。伪代码如下：

```python
for student in all_students.sort_by(score):
    for choice in student.all_choices:
        if meet(student, choice):
            assign(student, choice.group)
            break
```

投档条件首先是分数，要求考生的分数超过该投档单位的投档线；其次，部分投档单位有额外的限制，例如上面提到的物理化学等等。

再次强调，投档的时候不会看填了专业组里的哪些专业，也不会看是否选择不服从分配。

在平行志愿模式下，有一个很重要的现象，就是退档的时候，考生会很难再进入好的学校。观察上面的投档流程，每个学生只会投档一次，如果投档了又退档了，是不会立即投档的。而是要等到所有学生都投档和录取完成以后，部分高校没有完成招生计划，还有空余，那么在征集志愿的阶段，这些退档的学生才有机会重新填志愿，重新投档，重新录取。

## 模拟投档

上面的投档过程中，涉及到一个参数，那就是投档线。这里涉及到一个概念，投档比例（也叫调档比例）：投档的人数，相比计划数的比例。例如 100% 就是计划收 100 个学生，那就投档 100 个学生；105% 就是计划收 100 个学生，投档 105 个学生。

那么投档线是怎么定的呢？答案是模拟投档。在正式投档前，需要进行多轮的模拟投档，模拟投档的结果会通知各高校，各高校可以调整自己的计划和投档线，调整完以后再次模拟投档。这样多轮以后，模拟投档就会收敛到一个稳定的状态，此时各个高校都会知道自己的投档线是多少，可以投档多少个学生，也不打算修改参数了，只不过不是正式结果。

所以投档线并不等于录取的最后一名学生的分数线，虽然很多时候恰好相等。前文也提到，退档在平行志愿的模式下，是一个对于学生来说很吃亏的事情，因此实际上投档比例大部分时候就是 100%。具体操作是，在模拟投档的时候进行检查，如果投档比例大于 100%，而多出来的部分又不会录取进来，那就提高投档线，尽量保证投档的学生都可以录取。但如果遇到分数在中游，不服从专业调剂，同时无法满足专业，此时可能也不得不先调档再退档，同时扩大投档比例，保证有足够计划数的考生可以录取。

高校的招生章程会规定调档比例的上限，常见的是 105%，但这只是上限，实际大部分都是 100% 的比例，这样可以尽量减少退档的情况发生。

以目前的计算机性能，投档是一个很快的事情，几分钟就可以完成，所以模拟投档主要花的时间还是在高校一侧。

## 正式投档

正式投档时，会按照前述平行志愿的方式进行投档，每个考试投档到至多一个投档单位，也就是某高校的某专业组。高校进行阅档，然后对该考试进行专业的分配，选择录取到某个专业，或者选择退档。这个结果会反馈到省考试院，考试院按照教育公平的标准进行录取检查，例如：

1. 高分考生专业优先
1. 退档需给出必要理由

其中第一点保证了，如果 A 比 B 分高，且都填报了同一个专业，那么 B 能够进入这个专业的前提是 A 也能够进入这个专业。并且考生的专业录取也要按照考试填报的专业顺序进行匹配。高校招生办必须按照这个规则进行，因此其实所谓的专业分配，也就是在计算机上跑一段类似平行志愿的程序，只不过这次分配的是专业。

考试院可以选择审核通过，那么录取的考生就完成了整个录取流程，录取到该高校的该专业。审核不通过时，需要高校招生办重新录取。

## 小结

普通高校招生录取流程是一个十分严谨的过程，在一定程度上兼顾了公平和效率：

1. 公平：投档和录取都按照既定的规则执行，由计算机程序自动计算结果，结果由多位老师进行审核
1. 效率：不同分数段的考生可以同时进行，不同高校之间也可以同时并行，代价是退档的风险较大

整个流程中大部分决策都是计算机程序自动进行计算，有限的自由在教育公平的前提下实现。
