长按音符并不是只在开头按一下就完成。把要求保持的时间段与实际按住的时间段叠加,可以看到漏掉的区间,而不仅是一个总分。重叠输入也不能被重复计时。
这份练习把数据、规则和中间状态一起列出。可以先自行推演,再与过程记录逐项比较;如果结果不同,先找到第一处分歧,确认时间单位、端点归属和运算顺序。案例是一套限定模型,不把其他作品的不同实现认定为错误。
规则与输入
这里不模拟任何商业作品评分,只计算目标左闭右开区间内,被至少一个按住区间覆盖的整数时间单位。目标外的按住时间不计,重叠部分只计一次,不设置宽容窗口。
目标长按[8,29),长度21 [[21, 23], [24, 32], [28, 35], [13, 18], [22, 27], [8, 16], [6, 10]]
逐项推演
输入0按住[21,23),落在目标内的单位起点[21, 22];此前未覆盖的新单位[21, 22],累计覆盖2。
输入1按住[24,32),落在目标内的单位起点[24, 25, 26, 27, 28];此前未覆盖的新单位[24, 25, 26, 27, 28],累计覆盖7。
输入2按住[28,35),落在目标内的单位起点[28];此前未覆盖的新单位[],累计覆盖7。
输入3按住[13,18),落在目标内的单位起点[13, 14, 15, 16, 17];此前未覆盖的新单位[13, 14, 15, 16, 17],累计覆盖12。
输入4按住[22,27),落在目标内的单位起点[22, 23, 24, 25, 26];此前未覆盖的新单位[23],累计覆盖13。
输入5按住[8,16),落在目标内的单位起点[8, 9, 10, 11, 12, 13, 14, 15];此前未覆盖的新单位[8, 9, 10, 11, 12],累计覆盖18。
输入6按住[6,10),落在目标内的单位起点[8, 9];此前未覆盖的新单位[],累计覆盖18。
覆盖18拍,缺失3拍,连续缺口[[18, 21]];两者之和为21。
复核与使用边界
把目标逐单位展开,标记每个单位是否被覆盖,再合并连续缺口。覆盖长度加缺口长度必须等于目标长度,多个输入的长度总和不能直接替代并集长度。
覆盖总长度一样的两次输入,缺口位置和数量可能完全不同。若规则对中途松开有单独惩罚,不能仅用总覆盖长度判断得分;本例把缺口列出,是为了让后续评分规则有清楚的输入。
复盘时建议保留输入表和中间状态,而不仅保存最终答案。改动一个条件后重新推演,再检查起点、终点、重复值和临界输入;这样能把规则本身、计算实现和显示结果分别核对,避免把一次偶然相同当成验证完成。
