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

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

说实话这道题挺恶心 有意思的,大模拟,主要的思路就是模拟时间轴。

题目描述

假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。

有些银行会给VIP客户以各种优惠服务,例如专门开辟VIP窗口。为了最大限度地利用资源,VIP窗口的服务机制定义为:当队列中没有VIP客户时,该窗口为普通顾客服务;当该窗口空闲并且队列中有VIP客户在等待时,排在最前面的VIP客户享受该窗口的服务。同时,当轮到某VIP客户出列时,若VIP窗口非空,该客户可以选择空闲的普通窗口;否则一定选择VIP窗口。

本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统计每个窗口服务了多少名顾客。

输入格式:
输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T、事务处理时间P和是否VIP的标志(1是VIP,0则不是),并且假设输入数据已经按到达时间先后排好了顺序;最后一行给出正整数K(≤10)—— 为开设的营业窗口数,以及VIP窗口的编号(从0到K−1)。这里假设每位顾客事务被处理的最长时间为60分钟。

输出格式:
在第一行中输出平均等待时间(输出到小数点后1位)、最长等待时间、最后完成时间,之间用1个空格分隔,行末不能有多余空格。

在第二行中按编号递增顺序输出每个窗口服务了多少名顾客,数字之间用1个空格分隔,行末不能有多余空格。

输入样例:

10
0 20 0
0 20 0
1 68 1
1 12 1
2 15 0
2 10 0
3 15 1
10 12 1
30 15 0
62 5 1
3 1

输出样例:

15.1 35 67
4 5 1
#include <bits/stdc++.h>
struct consumer
{double arrive;double process;double start;double end;double wait;int vip;int skip;
}c[1001];
struct windows
{int count;int availiable;double end;
}w[11];
using namespace std;
int main()
{memset(c,0,sizeof(c));memset(w,0,sizeof(w));int n,k,arrive,process,vip;cin>>n;for (int i=0;i<n;i++){cin>>arrive>>process>>vip;if (process>60) process=60;c[i].arrive=arrive;c[i].process=process;c[i].vip=vip;}int v;cin>>k>>v;for (int i=0;i<k;i++) w[i].availiable=1;int count=0;int m;for (m=0;;m++){if (count==n) break;for (int i=0;i<k;i++)   //窗口刷新 {if (w[i].end==m){w[i].availiable=1;}}if (w[v].availiable==1)    //vip窗口拉人 {for (int i=0;c[i].arrive<=m&&i<n;i++){if (c[i].skip==1) continue;if (c[i].vip==1){c[i].skip=1;c[i].start=m;c[i].end=c[i].start+c[i].process;c[i].wait=c[i].start-c[i].arrive;w[v].availiable=0;w[v].end=m+c[i].process;count++;w[v].count++;break;}}}for (int i=0;i<k;i++){if (w[i].availiable==1){for (int j=0;j<n&&c[j].arrive<=m;j++){if (c[j].skip==1) continue;c[j].start=m;c[j].end=c[j].start+c[j].process;c[j].skip=1;c[j].wait=c[j].start-c[j].arrive;w[i].availiable=0;w[i].count++;w[i].end=m+c[j].process;count++;break;}}}}double sum=0;int maxwait=-1,last=-1;for (int i=0;i<n;i++){sum+=c[i].wait;if (c[i].wait>maxwait){maxwait=c[i].wait;}if (c[i].end>last){last=c[i].end;}
//		printf("*%.1lf %.1lf %.1lf\n",c[i].start,c[i].process,c[i].end);}printf("%.1lf %d %d\n",sum/n,maxwait,last);printf("%d",w[0].count);for (int i=1;i<k;i++){printf(" %d",w[i].count);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程同步-互锁函数

互锁函数&#xff1a; LONG InterlockedIncrement&#xff08;LONG volatile* Addend&#xff09;&#xff1a;递增指定32位变量&#xff0c;增量位1&#xff0c;可以阻止其他线程同时使用此变量&#xff1b;LONG InterlockedDecrement&#xff08;LONG volatile* Addend&#…

李德毅院士:探索新一代人工智能产业发展

来源&#xff1a;主线科技2021年5月14日&#xff0c;主线科技联合中国人工智能学会智驾专委会正式发起成立“新一代人工智能物流创新中心”&#xff0c;并携手福佑卡车开启中国首个干线物流自动驾驶商业项目。在此次活动上&#xff0c;中国工程院院士、CAAI名誉理事长、主线科技…

1.修理牧场

农夫要修理牧场的一段栅栏&#xff0c;他测量了栅栏&#xff0c;发现需要N块木头&#xff0c;每块木头长度为整数L​i个长度单位&#xff0c;于是他购买了一条很长的、能锯成N块的木头&#xff0c;即该木头的长度是Li​​ 的总和。 但是农夫自己没有锯子&#xff0c;请人锯木的…

线程同步-事件内核对象

事件内核对象&#xff1a;两种状态&#xff0c;受信状态与未受信状态&#xff0c;3个成员&#xff1b; nUsageCount&#xff08;使用计数&#xff09;&#xff1b;bManualReset&#xff08;是否人工重置&#xff09;&#xff1b;bSignagled&#xff08;是否受信&#xff09;。基…

yii2.0AR两表联查

首先&#xff0c;建两个关联表。 表一 -- Table structure for article -- ---------------------------- DROP TABLE IF EXISTS article; CREATE TABLE article ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增id, new text, t_id int(11) DEFAULT NULL COMMENT 关联id, P…

AI产业链全景图!【物联网智商精选】

来源&#xff1a;ittbankAI产业链全景图最后给大家介绍一款英伟达高性能AI边缘计算超级计算机模块&#xff1a;NVIDIA JETSON TX2Jetson TX2是NIVDIA瞄准人工智能在Jetson TK1和TX1推出后的升级TX2的GPU和CPU都进行了升级&#xff0c;内存增加到了8GB、存储增加到了32GB&#…

7-2 哈夫曼编码 (30 分)

2019.12.15更正Best函数样本数据初始化问题并且对代码添加了注释; 2020.11.17更正&#xff1a;题目说明&#xff1b; 原贴发于2019.11.22 注意&#xff1a;本题不是哈夫曼编码裸题&#xff0c;学习哈夫曼编码的同学不要过度依赖本题算法&#xff0c;只有参考价值&#xff1b; 给…

通用AI咋发展?向大脑学习是条路子

来源&#xff1a;中国科学报作者&#xff1a;郑金武编辑&#xff1a;赵路排版&#xff1a;志海作为代表自然界拥有最通用智能的生物大脑&#xff0c;可以借助低功耗和少量后天数据&#xff0c;实现在复杂环境下执行复杂任务的智能行为。因此&#xff0c;探索生物大脑智能认知的…

Oracle:select into 查询没有记录的解决办法

在数据库编程中&#xff0c;select into 语句可以将数据库的某些值赋值给程序的变量&#xff0c;使用起来非常方便。但很多时候也会遇到查询出来没有记录的情况&#xff0c;这时程序会出错。 可以使用 exception when NO_DATA_FOUND then 但是如merge into using 查不到时可以使…

MFC随机博弈黑白棋

随机博弈黑白棋 随机博弈黑白棋 TxyITxs | 随机博弈黑白棋 | 2019.04.21 摘要 通过随机落子&#xff0c;实现黑白棋的博弈。无任何落子规则&#xff0c;棋子死活与围棋中棋子的死活一致&#xff0c;即存在至少一口气。动态模拟双方博弈&#xff0c;但棋盘无落子位置时停止。…

7-3 喊山 (30 分)

搞了好几天心态的一道题&#xff0c;还是菜&#xff0c;原因就是想复杂了&#xff0c;第一次遇到了内存超限的问题&#xff0c;把邻接矩阵由二维数组换成了vector才过的。 7-3 喊山 (30 分) 喊山&#xff0c;是人双手围在嘴边成喇叭状&#xff0c;对着远方高山发出“喂—喂喂…

章鱼有9个大脑能编辑基因,智商高到无法理解,为何没发展出文明

来源&#xff1a;科学杂志按照进化论的观点&#xff0c;生物演化出脊椎&#xff0c;是发展出更高智商的敲门砖。因为脊椎让生物体内的神经高度集中&#xff0c;反应速度明显加快&#xff0c;并且还有利于大脑向更加高级的结构演化。事实也确实如此&#xff0c;如果盘点世界上最…

Python运算符与编码

while循环 1.基本循环while 条件: 循环体如果条件为真&#xff0c;那么循环则执行如果条件为假&#xff0c;那么循环不执行 while循环代码体现形式while 3>2:print(在人间) num 1  while num<101:  print(num)  num num 1 break 终止  continue 跳出本次循环,…

Windows坐标系统

坐标映射方式是设备环境中的一个重要属性&#xff0c;默认值为MM_TEXT&#xff0c;即左上角为原点&#xff0c;右方为x轴正方向&#xff0c;下方为y轴正方向&#xff0c;这种坐标系使用的单位是像素&#xff0c;其好处是窗口中的每一点的坐标不会因为窗口大小而改变。 映射方法…

7-1 公路村村通 (30 分)

现有村落间道路的统计数据表中&#xff0c;列出了有可能建设成标准公路的若干条道路的成本&#xff0c;求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N&#xff08;≤1000&#xff09;和候选道路数目M&#xff08;≤3N&#xff09;&#…

华为徐文伟:用数学和系统工程方法推进未来网络研究

来源&#xff1a;华为在2021第五届未来网络发展大会上&#xff0c;来自产业界、学术界、研究机构等领域的专家、行业领袖&#xff0c;围绕网络操作系统、6G通信、网络安全、工业互联网等热点话题&#xff0c;共同探讨新型网络技术的攻关与变革。华为董事、战略研究院院长徐文伟…

Windows框架

#include<Windows.h> #include<tchar.h> #include"resource.h" //全局变量 LPSTR g_MainFrame "主框架"; LPSTR g_ClientFrame "客户区框架"; LPSTR g_ChildFrame[] { "子框架1","子框架2" }; LRESULT CALL…

7-4 最短工期 (25 分)

参考链接&#xff1a;https://blog.csdn.net/tianwei0822/article/details/88642441 一个项目由若干个任务组成&#xff0c;任务之间有先后依赖顺序。项目经理需要设置一系列里程碑&#xff0c;在每个里程碑节点处检查任务的完成情况&#xff0c;并启动后续的任务。现给定一个…

对我国6G早期研究布局的几点建议

来源&#xff1a;赛迪智库众所周知&#xff0c;5G网络技术无法满足2030年及未来的移动通信需求。第六代无线移动通信网络&#xff08;6G&#xff09;将引入全球覆盖、高频谱效率和能源效率、高智能性和安全性等新的性能指标和用例等&#xff0c;以解决快速增长的通信需求。虽然…

springmvc中@RequestMapping的使用

通过RequestMapping注解可以定义不同的处理器映射规则。 1.1 URL路径映射 RequestMapping(value"/item")或RequestMapping("/item")。 value的秩是数组&#xff0c;可以将多个url映射到同一个方法。 1.2 窄化请求映射 在class上添加RequestMapping(url)指定…