评分方式
我们提供了十个评分文件 nodes1.ans~nodes10.ans,分别对应每个计算任务。每个评分文件共 $10$ 行,第 $i$ 行一个评分参数 $w_i$,具体意义将在下面给出。
本题中,每个测试点单独进行评分,每个测试点 $10$ 分,如果选手的输出格式不合法或者参数不符合题目约定,则得 $0$ 分。
否则,按照以下规则判定选手的输出是否正确:
首先测评器会生成若干组输入数据,并将输入数据代入你构造的计算机。
如果在代入某一组输入数据时:你构造的计算机的计算过程中,某个计算节点的计算结果的绝对值超过 $10^{1000}$,则得 $0$ 分;你构造的计算机的输出中的某个值与预期的输出值相差超过 $10^{-9}$,则认为你的输出不正确,得 $0$ 分。
否则,我们认为你的计算机能完成给定的计算任务,并按照以下规则得分。
对于每个测试点,我们设置了 $10$ 个评分参数 $w_1 , w_2 , w_3 , \dots , w_9 , w_{10}$,假设共使用了 $n$ 个计算节点,你的分数将会由下表给出:
| 得分 |
条件 |
得分 |
条件 |
| $10$ |
$n\le w_{10}$ |
$5$ |
$w_{6}\lt n\le w_{5}$ |
| $9$ |
$w_{10}\lt n\le w_{9}$ |
$4$ |
$w_{5}\lt n\le w_{4}$ |
| $8$ |
$w_{9}\lt n\le w_{8}$ |
$3$ |
$w_{4}\lt n\le w_{3}$ |
| $7$ |
$w_{8}\lt n\le w_{7}$ |
$2$ |
$w_{3}\lt n\le w_{2}$ |
| $6$ |
$w_{7}\lt n\le w_{6}$ |
$1$ |
$w_{2}\lt n\le w_{1}$ |
若不符合表中所有条件,得 $0$ 分。
除此之外,使用比较节点、Max 节点和乘法节点的代价是极为昂贵的。因此,这三种节点每使用一种,就会从你这个测试点的得分中倒扣 $4$ 分。
注意这里是按使用节点的种类数计算扣分,与使用次数无关。例如多次使用比较节点,只会扣除 $4$ 分;又如同时使用了比较节点和乘法节点,即使各只使用了一次,也会扣除 $8$ 分。
一个测试点至多被扣到 $0$ 分,即使分数不够扣除,也不会出现负数。
如何测试你的输出
在附加文件中,我们提供了 checker.cpp 和所需的 testlib.h,请自行编译后测试。
编译好后,在终端(Linux)中输入如下命令(假设编译好的检查器名称为 checker):
./checker <case_no>
或在命令提示符(Windows)中输入如下命令:
checker <case_no>
其中,<case_no> 为需要检查的测试点编号。在运行前,请将 nodes*.in/out/ans 与 checker 放于同一目录下。