PAT甲级1014

##PATJ1014
这是一道30分的题,算是个应用题也就是自由发挥那种类型的题。如果是在考场遇到这题的话全靠运气(狗头),其实题不难,就是题目介绍里有坑(甲级模范)
在这里插入图片描述
题目大意:一个银行8:00开业有N个窗口,窗口和等待区之间有一条黄线,黄线内每个窗口可以容纳M个顾客,顾客每次去人最少的那队排队。给我们顾客数和每个顾客的服务时长,要求我们输出特定顾客离开银行的时间(如果顾客未能在17:00前接受服务就输出Sorry)
笔者的卡点也就是上面括号里的那句话(哈哈,甲级的题真要命,我一开始一位是服务完的时间不能超过17:00。。。这个银行真良心)。
笔者采用对列AC,用一个结构体window(包含该队列顾客服务开始、完成的时间、和队列上的总人数)。
一开始先找哪排人最少顾客就去哪排排队(初始时间为0)顾客开始时间为该队上一位的离开时间,离开时间为该队上一位的离开时间+自己的服务时间。
如果所有的对都排满了此时顾客就需要等待完成的人离开了(排队是不需要时间的,只有服务费时),这个时候比较所有队列里第一位顾客的离开时间,最小的那列就是接下来的那位顾客要去的队,这个时候那列从队头第一位出队,黄线后的顾客再从队尾入队同时更新自己的开始时间和离开时间。这样所有顾客的开始离开时间都能获得。
重点!!!打印时比较顾客的开始时间是否超过17:00超过Sorry没超过正常打印。。。
在这里插入图片描述
速度5ms没毛病

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值