深耕专业教研,探索前沿技术
信息技术来源:温州市普通高中2026届高三第二次适应性考试

第 13 题

答案与解析

第(1)小题

参考答案

A

每分钟最多到达1件货品,因此在一个派车周期尚未结束时,可以用“已到达件数+剩余分钟数”求出本周期最终件数的上限。若上限不超过5件,就能提前确定派小车;若已到达件数超过5件,则能提前确定派大车。

到第6分钟,已到达2件,还剩4分钟,最终可能达到6件,也可能不超过5件,尚不能确定车型。到第7分钟,已到达件数仍为2,还剩3分钟,即使后续每分钟都有1件到达,总数也至多为2+3=5件,不会超过k=5。因此可以在第7分钟提前确定派小车,无须等到第10分钟。

第(2)小题

参考答案
  1. tot = 0

  2. r = m - i - 1

  3. i == m - 1

程序分析

while True:
    ①
    data = []; i = 0
    while i < m - 1:
        ...
    if ③:
        ...
    else:
        ...

外层while True反复执行每个m分钟的派车周期。每轮重新建立空列表data,并令i从0开始;内层循环及其后的分支都属于本轮周期。

while i < m - 1:
    # 读取货品数据并加入列表data,代码略
    tot += data[i]
    ②
    if tot + r <= k or tot > k:
        # 根据货品数量提前通知派发车型,代码略
        break
    i += 1
    # 延时1分钟,代码略

data[i]是本轮第i+1分钟读到的0或1。tot += data[i]将本次到达件数加入累计量,tot用于记录本周期已到达的货品总数。

判断中的tot > k表示现有货品已经超过阈值,后续数据不会改变派大车的结果;tot+r <= k则要求即使后续每分钟都有货品到达,最终总数也不超过阈值。因此r应表示当前读取完成后剩余的分钟数,也是后续最多还能到达的件数。

任一条件成立,就提前通知车型并执行break;否则才将i加1,继续下一分钟。内层循环只考察前m-1个数据,最后一分钟留给后续分支处理。

if ③:
    # 未发送提前通知,读取最后一个数据并派车,代码略
else:
    # 已发送提前通知,读取后续货品数据直至派车,代码略

两条分支分别处理尚未提前通知和已经提前通知的情况。提前通知只确定车型,并不改变每m分钟派车一次的安排;已经通知时,仍需读取本周期的后续数据,直到派车。

填空分析

①

空①位于外层循环内、开始采集本周期数据之前。tot累计的是当前派车周期的到达件数,因此每个周期开始时都应将其置为0,填写tot = 0。

②

执行到空②时,已经读取并累计了下标0至i的数据,共i+1个。本周期共有m个数据,所以还剩m-(i+1)个待读取,对应剩余m-i-1分钟。填写r = m - i - 1。例如第一次读取后i=0,剩余m-1分钟;读完倒数第二个数据时i=m-2,仍剩最后1分钟。

③

该条件要识别“未发送提前通知”。如果始终未触发break,每轮都会执行i += 1,读完前m-1个数据后i增至m-1,内层循环正常结束。如果提前通知,则break发生在i += 1之前,此时仍满足i < m-1。因此用i == m - 1区分正常结束与提前退出,填写该表达式。m=1时,内层循环不执行,i=0=m-1,也会进入读取最后一个数据并派车的分支。