• 【PAT甲级】1017 Queueing at Bank (25 分)


    题意:

    输入两个正整数N,K(N<=10000,k<=100)分别表示用户的数量以及银行柜台的数量,接下来N行输入一个字符串(格式为HH:MM:SS)和一个正整数,分别表示一位用户到达银行的时间以及该用户占用银行资源的时间,求用户的平均等待时间。(当一位用户早于早晨八点到达银行不开门,他需要等待,当一位用户晚于下午五点到达银行关门,该用户不计入等待时间计算)【答案保留一位小数】

    AAAAAccepted code:

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    typedef struct{
        int t,x;
    }stct;
    stct user[10007];
    bool cmp(stct a,stct b){
        if(a.x!=b.x)
            return a.x<b.x;
        return a.t<b.t;
    }
    int line[107];
    int main(){
        double sum=0;
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=n;++i){
            cin>>s>>user[i].t;
            int x=0;
            x+=(s[0]-'0')*36000;
            x+=(s[1]-'0')*3600;
            x+=(s[3]-'0')*600;
            x+=(s[4]-'0')*60;
            x+=(s[6]-'0')*10;
            x+=s[7]-'0';
            user[i].x=x;
            user[i].t*=60;
            if(user[i].x<8*3600){
                sum+=8*3600-user[i].x;
                user[i].x=8*3600;
            }
        }
        sort(user+1,user+1+n,cmp);
        int cur=99999999;
        int num=0;
        for(int i=1;i<=k;++i){
            if(i>n)
                break;
            num=i;
            line[i]=user[i].x+user[i].t;
            cur=min(cur,line[i]);
        }
        for(int i=k+1;i<=n;++i){
            if(user[i].x>17*3600)
                break;
            num=i;
            sum+=max(0,cur-user[i].x);
            for(int j=1;j<=k;++j)
                if(line[j]==cur){
                    if(cur<user[i].x)
                        line[j]=user[i].x+user[i].t;
                    else
                        line[j]+=user[i].t;
                    break;
                }
            cur=99999999;
            for(int j=1;j<=k;++j)
                cur=min(cur,line[j]);
        }
        sum/=num;
        sum/=60;
        printf("%.1f",sum);
        return 0;
    }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    5.7
    人月神话阅读笔记1
    python汉诺塔问题的递归理解
    用python进行有进度条的圆周率计算
    使用Python+turtle绘制同心圆
    less.modifyVars方法切换主题样例
    npm简单插件开发流程
    Mac中执行yarn global add @vue/cli 成功后,执行vue --version 提示zsh: command not found: vue 解决方法
    执行yarn deploy打包,报内存溢出的错误解决办法
    为首屏增加加载动画
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11335622.html
Copyright © 2020-2023  润新知