搜索引擎优化的主要工作,淮安做网站优化,重庆做网站哪家好,关键词你们都搜什么题目描述 现在银行已经很普遍#xff0c;每个人总会去银行办理业务#xff0c;一个好的银行是要考虑 平均逗留时间的#xff0c;即#xff1a; 在一定时间段内所有办理业务的人员逗留的时间的和/ 总的人数。逗留时间定义为 人员离开的时间减去人员来的时间。银行只有考虑了… 题目描述 现在银行已经很普遍每个人总会去银行办理业务一个好的银行是要考虑 平均逗留时间的即 在一定时间段内所有办理业务的人员逗留的时间的和/ 总的人数。逗留时间定义为 人员离开的时间减去人员来的时间。银行只有考虑了这一点我们在办理业务的时候才不会等太多的时间。 为了简化问题我们认为银行只有一号窗口和二号窗口可以办理业务 并且在时间范围是12time18,即从中午十二点到晚上十八点输入数据采用分钟即0代表中午12点60代表下午一点90代表下午一点半… 这样time0time360, 如果超出这个时间段概不接受在这个时间段的一律接受。每个人到达的时间都不一样。顾客到达的时候总是前往人数少的那个窗口。如果办业务的两个人进入离去发生在同一时间则遵从先离去后进入。如果人数相当或者两个窗口都没有人总是前往1号窗口。请计算平均逗留时间总逗留的分钟数/总的人数。 输入 第一行一个整数t(0t100), 代表输入的组数 对于每一组输入一个整数n(0n100)代表有n个人。然后是n行每行有两个数据 x 与 y。 x代表顾客到达时间y代表该顾客逗留时间。x y为整数0x360(y0y15)。数据保证按顾客来的先后顺序输入。 输出 对于每组数据输出平均逗留时间保留两位小数。 示例输入 1
1
60 10 示例输出 10.00 #includebits/stdc.h using namespace std; typedef int QElemType; queueintQ;//第一窗口 queueintQ1;//第二窗口 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()0Q1.size()0)))//如果人数相当或者两个窗口都没有人总是前往1号窗口 { if(end1x)//当前人员到来时间在前一人员离开之后 { sumy; end1xy; } else//当前人员到来时间在前一人员离开之前 { sum(end1-x)y;//前一人员离开的时间减去当前人员到来时间当前人员逗留时间 end1y; } Q.push(end1); } else//否则前往第二窗口//与第一窗口同理 { if(end2x) { sumy; end2xy; } else { sum(end2-x)y; end2y; } 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(); end10;end20;sum0;//每个窗口结束时间总的逗留时间的初始化 scanf(%d,n); for(int i0;in;i) { scanf(%d%d,x,y); push_out(x,y); } printf(%.2lf\n,(1.0*sum)/(1.0*n)); } return 0; }