7-3 银行排队问题之单队列多窗口服务 (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

题目分析: 错了几次,纯粹的模拟,注意客人到窗口的时间和窗口开放时间的关系即可,若客人比所有窗口的开放时间都小,客人就会进最小的那个,到来时间只要比最小大,从左到右遍历,第一个进去即可。
你也可以这样想,假如我早早的来到黄线等候,那么我肯定是等到最近一个available的窗口,假如我来的比较晚,那么我肯定是从左向右,那个available就去那个。

代码

>#include <bits/stdc++.h>
using namespace std;
struct consumer
{int arr; //arriveint pro; //processint wait;
}a[1001];
struct gate
{int stt=0; //start timeint n=0;
}b[11],ss[11];
bool cmp(struct consumer x,struct consumer y)
{return x.wait>y.wait;
}
bool cmmp(struct gate x,struct gate y)
{return x.stt>y.stt;
}
int main()
{int n,ar,pr;double waitsum=0;cin>>n;for (int i=0;i<n;i++){cin>>ar>>pr;if (pr>60) pr=60;a[i].arr=ar;a[i].pro=pr;}int k,count=0;cin>>k;while (count<n){                                        //到的时间比所有窗口的stt都晚,就进入第一个窗口,否则进入第一个stt最小的窗口.
//      for (int i=0;i<k;i++)
//      {
//          printf("%d的开始时间是%d\n\n",i,b[i].stt);
//      }int t=0;for (int i=1;i<k;i++){if (b[i].stt<b[t].stt){t=i;}}if (a[count].arr<=b[t].stt){b[t].n++;a[count].wait=b[t].stt-a[count].arr;waitsum+=a[count].wait;b[t].stt+=a[count].pro;count++;}else if (a[count].arr>b[t].stt){int appr;for (int i=0;i<k;i++){if (a[count].arr>=b[i].stt){appr=i;break;}}b[appr].n++;a[count].wait=0;b[appr].stt=a[count].arr+a[count].pro;count++;}}int sss=0;for (int i=0;i<k;i++){ss[sss++].n=b[i].n;}sort(a,a+count,cmp);sort(b,b+k,cmmp);printf("%.1lf %d %d",waitsum/n,a[0].wait,b[0].stt);printf("\n");printf("%d",ss[0].n);for (int i=1;i<k;i++){printf(" %d",ss[i].n);}
}

7-3 银行排队问题之单队列多窗口服务 (25 分)相关推荐

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

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

  2. 7-46 银行排队问题之单队列多窗口服务 (10 分)

    7-46 银行排队问题之单队列多窗口服务 (10 分) 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙.当有窗口空闲时,下一位顾客即去该窗口处理事务.当有多个窗口 ...

  3. 7-4 银行排队问题之单队列多窗口加VIP服务 (30 分)

    7-4 银行排队问题之单队列多窗口加VIP服务 (30 分) 说实话这道题挺恶心 有意思的,大模拟,主要的思路就是模拟时间轴. 题目描述 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时 ...

  4. PTA: 7-2 银行业务队列简单模拟 (25 分)

    大一下半期数据结构 数据结构题目集 7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客 ...

  5. 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!

    一:题目 排队"夹塞"是引起大家强烈不满的行为,但是这种现象时常存在.在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙.当窗口空闲时,下一位顾 ...

  6. 7-2 银行排队问题之单窗口“夹塞”版 (30 分)

    PTA 排队"夹塞"是引起大家强烈不满的行为,但是这种现象时常存在.在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙.当窗口空闲时,下一位顾客 ...

  7. 7-4 银行排队问题之单窗口“夹塞”版 (30 分) C语言版

    排队"夹塞"是引起大家强烈不满的行为,但是这种现象时常存在.在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙.当窗口空闲时,下一位顾客即去该窗 ...

  8. 7-1 银行业务队列简单模拟 (25 分)

    题目: 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出 ...

  9. 银行排队问题--事件链表+多窗口队列(数据结构课本)

    银行排队问题 事件驱动模拟问题 问题分析: ​ 银行开放了4个窗口,现在客户要从四面八方到银行办理业务:根据常识,到银行就少不了排队.我们排队按最短队伍排列,中途不切换队伍. ​ 现在随机生成到银行办 ...

最新文章

  1. java通过使用ffmpeg获取视频的码率
  2. 2016全球数据新闻奖(DJA)颁布, 12个获奖作品全剖析
  3. LiveVideoStack线上分享第四季(十二):实时音视频抗丢包的实践
  4. 前端学习(2008)vue之电商管理系统电商系统之获取静态属性列表
  5. ANTLR 4(一)Getting Started
  6. 松下抛却Jungle掌机研发项目
  7. fasterrcnn论文_【论文解读】Yolo三部曲解读——Yolov1
  8. 班级管理系统(SSM+LayUI)
  9. VMware虚拟机下载、安装与使用
  10. Origin 2022安装教程(附下载链接)
  11. matlab期货,Matlab在股指期货中的应用
  12. ln软链接调试mininet
  13. 离职前一定要做好这7件事情,少一件都很麻烦。
  14. 下载FATSQ,读取10条序列并计算每条序列的长度和GC含量
  15. eap wifi 证书_如何以编程方式在Android中安装CA证书(用于EAP WiFi配置)?
  16. 06-手机登录token生成容联云短信验证用户认证和网关整合(网关做统一权限认证)
  17. Unity实战(1):Unity点击按钮,打印按钮文字内容
  18. zigzag convert
  19. Linux中的nl命令
  20. 中央气象局天气预报接口城市代码大全

热门文章

  1. LeetCode 1123. 最深叶节点的最近公共祖先(递归比较子树高度)
  2. LeetCode 376. 摆动序列(贪心 动态规划)
  3. andriod studio 运行 无结果_无负压静音供水设备下篇一
  4. tar linux 举例,linux 的tar 命令详解举例
  5. 大数据应用项目创新大赛_全国高校大数据应用创新大赛
  6. python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】
  7. php中写salt,请快速检查这个PHP+SALT实现-不工作?
  8. Python算法题----在列表中找到和为s的两个数字
  9. PAT乙类1013 数素数 (20 分)
  10. 五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?