呃,这个题,我只想仰天长啸:无语死我了,还动用了繁和帅锅给我改,妹的,做题一定要仔细仔细再仔细啊,这种小错误都犯真是该打。

题目描述

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

为了简化问题,我们认为银行只有一号窗口和二号窗口可以办理业务 ,并且在时间范围是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<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<queue>
using namespace std;
struct node
{
int arr;//离开时间
int wait;//等待时间
int lea;//离开时间
};
int main()
{
int t ;
cin>>t;
for(int i = ; i <= t ; i++)
{
double sumtime = 0.0;//初始化一定要放到循环里边,要不然会覆盖,就会出现错误,这个地方一定一定要注意。
int q = ,p = ;//q第一队最后一个人离开时间
queue<int>Q,P;//定义两个队列,一个是1窗口的一个是2窗口的。保存的是每个队伍的离开时间
node a[];
int n;
cin>>n;
for(int j = ; j <= n ; j++)
{
scanf("%d %d",&a[j].arr,&a[j].wait);
while(!Q.empty()&&Q.front()<=a[j].arr)//判断原有队列是否有人离开,只要到达时间小于等于前一个人的离开时间
Q.pop();
while(!P.empty()&&P.front()<=a[j].arr)
P.pop();
if(Q.size()<=P.size())
{
if(a[j].arr<p)//如果后来的人的时间小于前一个人离开的时间那么他最后离开的时间是自己逗留的时间加前一个人走的时间点
a[j].lea = p +a[j].wait;
else
a[j].lea = a[j].arr+a[j].wait ;
p = a[j].lea;
sumtime += p-a[j].arr ;
Q.push(p);//压入队列中
}
else
{
if(a[j].arr<q)
a[j].lea = q+a[j].wait;
else
a[j].lea = a[j].arr+a[j].wait ;
q = a[j].lea ;
sumtime += q-a[j].arr ;
P.push(q);
}
}
printf("%.2lf\n",1.0*sumtime/n);
}
return ;
}

SDUT2087离散事件模拟-银行管理的更多相关文章

  1. SDUT2087 离散事件模拟-银行管理(模拟)

    题目链接. 分析: 模拟. 果然模拟什么的最讨厌了. 用e1,e2分别记录队列1,队列2的结束时间. 每个结点的s记录开始时间,e一开是记录逗留时间,进队列的时候,改成离开的时间.时刻记录总时间就可以 ...

  2. 【AMAD】salabim -- Python中进行离散事件模拟

    简介 用法 个人评分 简介 salabim1是用来定义离散事件模拟(DES2),以及转换为动画的一个python库. 用法 请看官方文档3. 个人评分 实用性是基于对平均群众的,大多数人还是接触不到这 ...

  3. [Pyhton] SimPy 离散事件模拟框架详解 —— 以一个简单的汽车充电排队模拟为例

    目录 一.背景知识 二.SimPy 讲解 2.1 SimPy 概述 2.2 基本概念 2.3 一个汽车开开停停的例子 2.4 在走走停停过程中增加充电过程(过程交互) 2.5 共享资源 三.后续 参考 ...

  4. trigger事件模拟

    事件模拟trigger 在操作DOM元素中,大多数事件都是用户必须操作才会触发事件,但有时,需要模拟用户的操作,来达到效果. 需求:页面初始化时触发搜索事件并获取input控件值,并打印输出(效果图如 ...

  5. 深入理解DOM事件机制系列第四篇——事件模拟

    × 目录 [1]引入 [2]模拟机制 [3]自定义事件 前面的话 事件是网页中某个特别的瞬间,经常由用户操作或通过其他浏览器功能来触发.但实际上,也可以使用javascript在任意时刻来触发特定的事 ...

  6. 浅谈Javascript事件模拟

    事件是用来描述网页中某一特定有趣时刻的,众所周知事件通常是在由用户和浏览器进行交互时触发,其实不然,通过Javascript可以在任何时间触发特定的事件,并且这些事件与浏览器创建的事件是相同的.这就意 ...

  7. c#全局鼠标事件以及鼠标事件模拟

    最近在编写Max插件时,其主容器FlowLayoutPanel由于隐藏了滚动条,要实现按住鼠标中键上下拖动的功能,因此尝试了全局鼠标事件.以及鼠标勾子,可惜由于Max不争气?都未能实现,于是代码报废, ...

  8. 浅谈JavaScript的事件(事件模拟)

    事件经常由操作或者通过浏览器功能触发,通过JavaScript也可以触发元素的事件.通过JavaScript触发事件,也称为事件的模拟. DOM中事件模拟 可以document的createEvent ...

  9. Javascript高级编程学习笔记(72)—— 模拟事件(2)IE事件模拟

    IE中的事件模拟 低版本的IE浏览器作为前端开发的一股清流,想避过都不行 虽然低版本IE正在逐步被市场淘汰,不得不承认IE8以下的浏览器依然占了不小的份额 所以这里大概介绍IE8以下的低版本IE中的事 ...

随机推荐

  1. 3月3日(6) Climbing Stairs

    原题 Climbing Stairs 求斐波那契数列的第N项,开始想用通项公式求解,其实一个O(n)就搞定了. class Solution { public: int climbStairs(int ...

  2. javascript 逻辑运算符

    javascript逻辑运算符 NOT(!) AND(&&) OR(||) NOT(!) 返回值的类型一定是Boolean值的 运算数也是Boolean值 返回值是:与相反的boole ...

  3. Android开发面试题(一)

    1.String和StringBuffer有什么本质区别? 本质区别:String字符串不可变,每次修改字符串必须要重新赋值(生成新的对象)才能修改:StringBuffer字符串可变,可以直接对字符 ...

  4. [DevExpress]ChartControl之柱状图示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...

  5. SequoiaDB数据库集群部署

    一般在多机环境下部署数据库的集群模式是比较繁琐的,下面我来分享一个如何通过shell脚本的方式简单.方便地部署我们的集群. 首先,我们要给机器配置信任关系,这样我们就无需手动的输入密码来执行ssh和s ...

  6. Delphi XE5教程4:程序和单元概述

    内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误!也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者可 ...

  7. [转]Linux下修改/设置环境变量JAVA_HOME

    1. 永久修改,对所有用户有效  # vi /etc/profile //按键盘[Shift + g], 在profile文件最后添加下面的内容: export JAVA_HOME = /home/m ...

  8. 如何取消FLEX里模态窗口的毛玻璃效果

    在Flex里面,比如使用PopUpManager.createPopUp(this,TipWindow,false)第三个参数设成true 会出现毛玻璃效果让CPU飙升,可不可以改变模态窗口的效果,不 ...

  9. JAVA的字节码技术

    1.什么是字节码? 字节码 byteCode JVM能够解释执行的.java程序的归宿,但是从规范上来讲和Java已没有任何关系了.一些动态语言也可以编译成字节码在JVM上运行.字节码就相当于JVM上 ...

  10. Virtualbox中安装Openwrt

    Virtualbox:https://www.virtualbox.org/wiki/DownloadsOpenwrt:http://downloads.openwrt.org/backfire/10 ...