刚才研究了一下,现在总算弄明白了(
为防止以后再有同学被坑到,我简单说一下:
自定义计分脚本 - 洛谷 的博客 中提到 对于每个计分脚本,将会传入若干组如下变量:@statusX、@scoreX、@timeX、@memoryX,其中 X 对应测试点/Subtask 的 ID。
,但是实际上只有 Subtask ID
能用了。(其实很久以前也是可以用测试点编号的,不知道为啥现在不行了)
这样改变之后其实方便了许多。
比方说原来可能需要写:
if @status1==AC and @status2==AC and @status3==AC and @status4==AC and @status5==AC and @status6==AC and @status7==AC and @status8==AC and @status9==AC and @status10==AC ;then
@final_status=AC;
@total_score=10000;
else
@final_status=UNAC;
@total_score=@score1+@score2+@score3+@score4+@score5+@score6+@score7+@score8+@score9+@score10;
fi
现在只需要写:
if @status0==AC ;then
@final_status=AC;
@total_score=10000;
else
@final_status=AC;
@total_score=@score0;
fi
这是因为,每个测试点的Subtask ID
默认为0
。