文章目录

  • 题353.2022暑期天梯赛训练-7-10 银行排队问题之单队列多窗口服务 (25 分)
    • 题目:
      • 输入格式:
      • 输出格式:
      • 输入样例:
      • 输出样例:
      • **思路**
      • **代码**

题353.2022暑期天梯赛训练-7-10 银行排队问题之单队列多窗口服务 (25 分)

题目:

假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。
本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统计每个窗口服务了多少名顾客。

输入格式:

输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T和事务处理时间P,并且假设输入数据已经按到达时间先后排好了顺序;最后一行给出正整数K(≤10),为开设的营业窗口数。这里假设每位顾客事务被处理的最长时间为60分钟。

输出格式:

在第一行中输出平均等待时间(输出到小数点后1位)、最长等待时间、最后完成时间,之间用1个空格分隔,行末不能有多余空格。在第二行中按编号递增顺序输出每个窗口服务了多少名顾客,数字之间用1个空格分隔,行末不能有多余空格。

输入样例:

9
0 20
1 15
1 61
2 10
10 5
10 3
30 18
31 25
31 2
3

输出样例:

6.2 17 61
5 3 1

思路

依题意,我么可以每次处理一个顾客,按编号从小到大看哪一个窗口可以直接为该顾客提供服务,并同时计算需要等待的窗口的等待时长,取等待时间最短的作为预备窗口,如果最后没有能直接使用的窗口,则将预备窗口提供给该顾客使用。按上述模拟过程,代码如下。

代码

#include <bits/stdc++.h>using namespace std;const int maxn=1100;
const int Inf=0x3f3f3f3f;int N,K;struct Person
{int arrive;//到达时间int spend;//服务时长
}P[maxn];Person windows[11];//银行窗口,对应成员变量意义为开始服务时间与服务时长
int waitsum,waitmax,waitend;//总等待时间,最大等待时间,最后完成时间
int num[11];//每个窗口服务的人数int main()
{cin>>N;for(int i=0;i<N;i++){cin>>P[i].arrive>>P[i].spend;P[i].spend=min(60,P[i].spend);//题目限制每位顾客事务被处理的最长时间为60分钟,所以在这里设防一下}cin>>K;for(int i=0;i<N;i++){int j;int wait=Inf,choice=0;//预备窗口等待时间,预备窗口编号for(j=1;j<=K;j++)//看哪个一个窗口能够直接提供服务了{Person w=windows[j];if(w.arrive+w.spend<=P[i].arrive)//当窗口开始服务时间+服务时长在i顾客到达时间之前或者踩点则可直接提供服务{windows[j]=P[i];num[j]++;break;}else//否则看看是否作为预备窗口给i顾客等待使用{int tmp=w.arrive+w.spend-P[i].arrive;//计算预计等待时间if(tmp<wait)//取预计等待时间最短的窗口来作为预备窗口{wait=tmp;choice=j;}}}if(j>K)//需要等待,使用预备窗口{waitsum+=wait;//求等待时间总和windows[choice]={P[i].arrive+wait,P[i].spend};//因为是得先等待,所以该窗口开始服务时间为当前顾客到达时间+等待时间!num[choice]++;waitmax=max(wait,waitmax);//求最大等待时间}}for(int i=1;i<=K;i++)//计算最迟完成时间{waitend=max(waitend,windows[i].arrive+windows[i].spend);}double waitaver=waitsum/(double)N;printf("%.1lf %d %d\n",waitaver,waitmax,waitend);for(int i=1;i<=K;i++){if(i>1) putchar(' ');printf("%d",num[i]);}
}

题353.2022暑期天梯赛训练-7-10 银行排队问题之单队列多窗口服务 (25 分)相关推荐

  1. 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分)

    文章目录 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 我这个做法 ...

  2. 天梯赛:L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

    题目详情 - L2-016 愿天下有情人都是失散多年的兄妹 (25 分) (pintia.cn) 题解:对于每个给出的编号进行层序遍历,把遍历到的元素存进集合里.如果两个集合存在交集,就代表它们存在公 ...

  3. 2022年天梯赛题目解析

    2022年天梯赛题目解析 L1-1 今天我要赢 (5 分)[输出水题] 题目描述 代码 L1-2 种钻石 (5 分)[四则运算] 题目描述 代码 L1-3 谁能进图书馆 (10 分)[分类讨论,判断题 ...

  4. 2022年天梯赛校内选拔赛(1)

    2022年天梯赛校内选拔赛(1) 7-1 暴力破解 (15 分) 题目描述 代码 7-2 学霸 (20 分) 题目描述 代码 思路 7-3 排课 (20 分) 题目描述 代码 7-4 简易测谎 (20 ...

  5. 2022年天梯赛比赛真题,L1基础题,C语言,没有算法的那种

    目录 L1-1 今天我要赢 (5 分) L1-2 种钻石 (5 分) L1-3 谁能进图书馆 (10 分) L1-4 拯救外星人 (10 分) L1-5 试试手气 (15 分) L1-6 斯德哥尔摩火 ...

  6. 2022年天梯赛题目记录

    目录 L1-1 今天我要赢 (5 分) L1-2 种钻石 (5 分) L1-3 谁能进图书馆 (10 分) L1-4 拯救外星人 (10 分) L1-5 试试手气 (15 分) L1-6 斯德哥尔摩火 ...

  7. 2020天梯赛训练1 题目整理

    7-1 比较大小 (10分) 题目链接: 7-1 比较大小 代码如下: import java.util.Arrays; import java.util.Scanner;public class M ...

  8. 2022年天梯赛上海理工大学校内选拔赛【部分题 题解】

    题目地址:https://ac.nowcoder.com/acm/contest/30532 题目难度偏简单,做出了7道快8道,认真做可能估计8-9道左右. 目录 A+B Problem[签到] Ko ...

  9. 7-121 洛希极限(天梯赛训练题)

    科幻电影<流浪地球>中一个重要的情节是地球距离木星太近时,大气开始被木星吸走,而随着不断接近地木"刚体洛希极限",地球面临被彻底撕碎的危险.但实际上,这个计算是错误的. ...

最新文章

  1. openstack网络服务neutron
  2. Tomcat系列之Java技术详解
  3. java jar包详解_Jar打包用法详解
  4. 试题 历届试题 带分数(全排列)
  5. 魔术方法php重定向,PHP魔术方法__get()
  6. update inner join mysql_Mysql update inner join
  7. 原生js追加html代码,原生js实现给指定元素的后面追加内容
  8. 记一次 .NET医疗布草API程序 内存暴涨分析
  9. python调用java方法_python调用Java方法传入HashMap ArrayList
  10. AUTOCAD——文本标注
  11. java实现RSA公私钥PKCS8与PKCS1之间的相互转换(java RSA pkcs8转pkcs1,RSA pkcs1转pkcs8),PKCS8和PKCS1公私钥byte数组还原为java对象
  12. 分布式系统与海量数据处理
  13. 布局改变时的过场动画
  14. 锂电池保护板测试软件,锂电池保护板测试仪
  15. 互联网公司常用的黑话,你中招了多少?
  16. mysql校对集_MySQL校对集问题的教程
  17. 关于 QMessageBox定制大小重写showEvent失败的 解决方法
  18. [记录点滴] 小心 Hadoop Speculative 调度策略
  19. C# Monitor.TryEnter 源码跟踪
  20. canvas实现粒子跟随鼠标动画

热门文章

  1. c++免注册大漠插件
  2. 全局服务器负载均衡(GSLB)简介
  3. python爬取ppt_Python-爬蟲13-實作-3-爬取PPT網站(完整程式碼)
  4. HttpWatch工具简介及使用技巧
  5. 怎么用dwl做个html语言模板,dwl是什么文件
  6. 输入python出现警告Warning: This Python interpreter is in a conda environment, but the environment has not
  7. java狗具有特别的接飞盘的方法_怎么训练狗玩飞盘?接飞盘的技术及要领分析...
  8. 直播App中Android酷炫礼物动画实现方案(上篇)
  9. 团员分享_AI小白如何拿到AI产品经理offer
  10. toLatin1 qt