📌  相关文章
📜  国际空间研究组织 | ISRO CS 2013 |问题 19(1)

📅  最后修改于: 2023-12-03 15:23:03.078000             🧑  作者: Mango

国际空间研究组织(ISRO)CS 2013 - 问题 19

本题中,我们将考虑一种排队问题,其中一组客户到达一个服务台并使用该服务,同时其他人仍在等待。我们需要计算平均等待时间。

问题描述

一个单线程的服务台处理百万级别的数据,并按照以下规则服务:

  1. 它可以同时服务最多 $n$ 个客户。
  2. 当服务台有人等待时,它将始终为下一个正在等待的客户提供服务。
  3. 如果要在处于服务状态时到达的客户,他们将被放在等待列表的末尾,并在前面的客户得到服务后再进行服务。
  4. 如果等待列表已满,则不再接受更多的客户,并将其直接拒绝。

我们需要计算平均等待时间,即从提交时到完成时的平均时间。

输入

第一行为一个整数 $T$,表示测试用例的数量。每个测试用例由以下几行组成:

  • 第一行为两个整数 $n$ 和 $q$,分别表示服务台最大服务客户数和客户数。
  • 接下来的 $q$ 行,每行包含两个整数 $t_i$ 和 $a_i$,分别表示第 $i$ 个客户提交请求的时间和需要服务的时间。
输出

对于每个测试用例,输出一行浮点数,表示所有客户的平均等待时间(保留三位小数)。

样例输入
1
1 4
0 5
2 7
4 5
5 7
样例输出
5.750
解释

在此示例中,我们只能为一个顾客提供服务。因此,顾客1提交后,我们需要为其提供服务,等待时间为0。顾客2提交时正在为顾客1提供服务,因此将其添加到等待队列中,等待时间为3。当顾客1服务完成时,我们为顾客2提供服务,等待时间为0。随后,顾客3提交请求并添加到等待队列,等待时间为1。当顾客2服务完成时,我们为顾客3提供服务,等待时间为0。最后,顾客4提交服务请求并添加到等待队列,等待时间为1。因此,总等待时间为0 + 3 + 0 + 1 = 4,平均等待时间为4 / 4 = 1.5。