ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1017 Queueing at Bank (25 分) (模拟 23/25

2022-02-04 15:58:32  阅读:224  来源: 互联网

标签:25 3600 23 int Queueing st nex push now


添加链接描述

/*
每个客户最多被服务1小时
给的小时 分钟 秒
超过17.00.01不被服务
提前来要等待
保留一位小数
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+9;
struct  node
{
    int st,nex;
}t[N];
bool cmp(node a,node b){
    return a.st<b.st;
}
priority_queue<int,vector<int>,greater<int>>p;
int main(){
    int n,k;
    cin>>n>>k;
    int hour,minute,second,nex;
    for(int i=1;i<=n;i++){
        scanf("%d:%d:%d%d",&hour,&minute,&second,&nex);
        int st=hour*3600+minute*60+second;
        nex*=60;
        t[i]={st,nex};
    }
    sort(t+1,t+1+n,cmp);
    // p.push(8*3600);
    // p.push(8*3600);
    // p.push(8*3600);
    for(int i=1;i<=k;i++){//卡了很久 这里不应该
        p.push(8*3600);
    }
    int ans=0,tot=0;
    for(int i=1;i<=n;i++){
        int st=t[i].st,nex=t[i].nex;
        if(nex>3600)nex=3600;
        if(st>17*3600)break;
        int now=p.top();
         tot++;
        p.pop();
        if(now>st){
            ans+=now-st;
            p.push(now+nex);
        }
        else {
            p.push(st+nex);
        }
    }
    // cout<<ans<<endl;
    if(ans==0)cout<<"0.0"<<endl;
    else printf("%.01lf",ans/60.0/tot);
}

标签:25,3600,23,int,Queueing,st,nex,push,now
来源: https://blog.csdn.net/Minelois/article/details/122783766

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有