离散事件模拟-银行管理

题目描述

现在银行已经很普遍,每个人总会去银行办理业务,一个好的银行是要考虑 平均逗留时间的,即: 在一定时间段内所有办理业务的人员逗留的时间的和/ 总的人数。逗留时间定义为 人员离开的时间减去人员来的时间。银行只有考虑了这一点,我们在办理业务的时候,才不会等太多的时间。

为了简化问题,我们认为银行只有一号窗口和二号窗口可以办理业务 ,并且在时间范围是12<=time<=18,即从中午十二点到晚上十八点,输入数据采用分钟即0代表中午12点,60代表下午一点,90代表下午一点半… 这样time>=0&&time<=360, 如果超出这个时间段概不接受,在这个时间段的一律接受。每个人到达的时间都不一样。顾客到达的时候,总是前往人数少的那个窗口。如果办业务的两个人进入离去发生在同一时间,则遵从先离去后进入。如果人数相当或者两个窗口都没有人总是前往1号窗口。请计算平均逗留时间=总逗留的分钟数/总的人数。

输入

第一行一个整数t(0<t<=100), 代表输入的组数

对于每一组输入一个整数n(0<n<=100),代表有n个人。然后是n行,每行有两个数据 x 与 y。 x代表顾客到达时间,y代表该顾客逗留时间。x y为整数(0=<x<=360)(y>0&&y<=15)。数据保证按顾客来的先后顺序输入。

输出

对于每组数据输出平均逗留时间,保留两位小数。

示例输入

1
1
60 10

示例输出

10.00


#include<bits/stdc++.h>
using namespace std;
typedef int QElemType;
queue<int>Q;//第一窗口;
queue<int>Q1;//第二窗口;

QElemType end1,end2,sum;//每个窗口结束时间,总逗留时间;


void push_out(QElemType x,QElemType y)//出入人员;
{
    while(!Q.empty()&&Q.front()<=x)
        Q.pop();//如果当前人员到来时间比前一人员晚,则前一个人办理完成后离开队列
    while(!Q1.empty()&&Q1.front()<=x)
        Q1.pop();//如果当前人员到来时间比前一人员晚,则前一个人办理完成后离开队列
        if(Q.size()<=Q1.size()||((Q.size()==0&&Q1.size()==0)))//如果人数相当或者两个窗口都没有人总是前往1号窗口
        {
            if(end1<=x)//当前人员到来时间在前一人员离开之后
            {
                sum+=y;
                end1=x+y;
            }
            else//当前人员到来时间在前一人员离开之前
            {
                sum+=(end1-x)+y;//前一人员离开的时间减去当前人员到来时间+当前人员逗留时间
                end1+=y;
            }
            Q.push(end1);
        }
        else//否则前往第二窗口//与第一窗口同理
        {
            if(end2<=x)
            {
                sum+=y;
                end2=x+y;
            }
            else
            {
                sum+=(end2-x)+y;
                end2+=y;
            }
            Q1.push(end2);
        }
}


int main()
{
    int t,n,x,y;
    scanf("%d",&t);
    while(t--)
    {
        while(!Q.empty())
           Q.pop();
        while(!Q1.empty())
           Q1.pop();
            end1=0;end2=0;sum=0;//每个窗口结束时间,总的逗留时间的初始化;
             scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%d%d",&x,&y);
                push_out(x,y);
            }
            printf("%.2lf\n",(1.0*sum)/(1.0*n));
    }
    return 0;
}



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

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

相关文章

Vim升华之树形目录插件NERDTree安装图解

无意中看到实验室的朋友使用的vim竟然能在左边显示树形目录&#xff0c;感觉很方便&#xff0c;这样子文件夹有什么文件一目了然。她说是一个插件叫NERDTree&#xff0c;安装执行后的效果如下&#xff0c;不是你想要的效果就别安了。我的系统是Ubuntu12.04&#xff0c;版本不同…

Grafana Prometheus Process-Exporter 服务进程监控

文章目录一、process-exporter安装二、Grafana展示离线导入在线导入之前介绍到Grafana Prometheus 安装部署并监控Linux服务器状态 https://datamining.blog.csdn.net/article/details/122671215 &#xff0c;这里我们介绍服务进程的通用监控。一、process-exporter安装 GitHu…

计算机学生的未来

计算机专业毕业后大致的工作方向是软、硬、网、图 四大类 尤其以软件、网络为现今的首选 从岗位上分&#xff0c;又可以分为技术道路、营销道路两大方向 if 你选择作技术&#xff0c;then 从现在开始&#xff0c;牢记&#xff1a; 天道酬勤&#xff01;&#xff01;&#xff…

linux 目录结构+常用命令+压缩命令+vim使用+及一些基础知识(非常好)

linux目录架构 / 根目录 /bin 常用的命令 binary file 的目录 /boot 存放系统启动时必须读取的档案&#xff0c;包括核心 (kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /boot/initrd 核心解压缩所需 RAM Disk /dev 系统周边设备 …

【Kafka启动报错】Caused by: java.lang.OutOfMemoryError: Map failed

参考&#xff1a;https://stackoverflow.com/questions/43042144/kafka-server-failed-to-start-java-io-ioexception-map-failed 报错日志 [2022-02-15 16:50:40,558] ERROR Error while deleting the clean shutdown file in dir /home/es/kafka_2.11-2.2.1/logs (kafka.se…

饮料换购(蓝桥杯)

饮料换购 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料&#xff0c;凭3个瓶盖可以再换一瓶C型饮料&#xff0c;并且可以一直循环下去&#xff0c;但不允许赊账。 请你计算一下&#xff0c;如果小明不浪费瓶盖&#xff0c;尽量地参加活动&#xff0c;那么&#xff0c…

算法6:只有五行的Floyd最短路算法

暑假&#xff0c;小哼准备去一些城市旅游。有些城市之间有公路&#xff0c;有些城市之间则没有&#xff0c;如下图。为了节省经费以及方便计划旅程&#xff0c;小哼希望在出发之前知道任意两个城市之前的最短路程。上图中有4个城市8条公路&#xff0c;公路上的数字表示这条公路…

vim的强大,vim设置和插件的使用,脱离windows才是王道

map <C-F12> :!ctags -R --c-kindsp --fieldsiaS --extraq .<CR> let Tlist_Show_One_File1 let Tlist_Exit_OnlyWindow1 let Tlist_Auto_Open1 set nocompatible """"""""""界面""&quo…

CloudCanal 部署使用教程

文章目录 CloudCanal官方说明文档CloudCanal安装Docker安装docker-compose安装下载安装包解压安装包启动CloudCanal确认启动是否成功使用教程(必读)创建同步任务Mysql同步到ElasticSearch添加数据源创建集群(服务器)名称创建集群生成唯一节点标识安装新 sidecar 容器启动sideca…

DFS全排列

第一种方法&#xff1a; package com.tjrac_java_2;import java.util.Scanner;public class Fun {public static int s0;static int[] anew int[100000];public static void main(String[] args) {int n;Scanner sc new Scanner(System.in);nsc.nextInt();for (int i 1; i &…

Apache Kylin从入门到精通

Kylin 文章目录Kylin一、概述1.1 Kylin定义1.2 Kylin架构1.3 Kylin特点1.4 Apache Kylin4 概述为什么选择 Parquet 替换 HBase?预计算结果在 Kylin4.0 中如何存储?Kylin 4.0 的构建引擎Kylin 4.0 的查询引擎Kylin 4.0 与 Kylin 3.1 功能对比Kylin 4.0 性能表现如何升级Kylin …

排序分析

九大基础排序总结与对比 标签&#xff1a; 数据结构排序算法九大排序2016-06-07 15:43 12646人阅读 评论(6) 收藏 举报分类&#xff1a;data structure版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] 请尊重个人劳动成果&#xff0c;转…

分巧克力(蓝桥杯)

标题&#xff1a; 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力…

Flume 实战开发指南

Flume 文章目录FlumeFlume介绍Flume核心概念Flume NG的体系结构SourceChannelSinkFlume的部署类型单一流程多代理流程&#xff08;多个agent顺序连接&#xff09;流的合并&#xff08;多个Agent的数据汇聚到同一个Agent &#xff09;多路复用流&#xff08;多级流&#xff09;l…

vim grep配置及使用

vimgrep /匹配模式/[g][j] 要搜索的文件/范围 g&#xff1a;表示是否把每一行的多个匹配结果都加入 j&#xff1a;表示是否搜索完后定位到第一个匹配位置 vimgrep /pattern/ % 在当前打开文件中查找 vimgrep /pattern/ * 在当前目录下查找所有 vimgrep…

C++ STL--stack/queue 的使用方法

1、stack stack 模板类的定义在<stack>头文件中。 stack 模板类需要两个模板参数&#xff0c;一个是元素类型&#xff0c;一个容器类型&#xff0c;但只有元素类型是必要 的&#xff0c;在不指定容器类型时&#xff0c;默认的容器类型为deque。 定义stack 对象的示例代码…

Flink Chain任务链分隔

Chain分隔 文章目录Chain分隔如何切断任务链&#xff1f;startNewChain 与 disableChaining区别全局切断任务链(chain)web端效果查看隔离后依赖链忙碌程度什么是Backpressured(被压/反压)&#xff1f;代码样例参考文献如何切断任务链&#xff1f; 由于共享slot的存在&#xff…

Vim winmanager文件浏览自动更新

使用winmanger插件中发现其中引用的fileexplorer不能自动更新到当前文件夹。 将vim/plugin/winfileexplorer.vim 中的函数FileExplorer_Start() function! FileExplorer_Start() let b:displayMode "winmanager" call s:EditDir(getcwd()) "if exists(s:lastDi…

KMP 深度讲解next数组的求解

【经典算法】——KMP&#xff0c;深入讲解next数组的求解 前言   之前对kmp算法虽然了解它的原理&#xff0c;即求出P0Pi的最大相同前后缀长度k&#xff1b;但是问题在于如何求出这个最大前后缀长度呢&#xff1f;我觉得网上很多帖子都说的不是很清楚&#xff0c;总感觉没有把…

Yarn 命令详细介绍

文章目录yarn命令根据状态查看Yarn全部运行应用程序根据提交程序代码提交类型查看运行程序yarn top 查看正在运行的状态yarn top整体资源使用查看Yarn web页面工具脚本根据yarn应用名称kill进程根据yarn应用名称查看日志yarn命令 根据状态查看Yarn全部运行应用程序 # 查看全部…