当前位置: 首页 > news >正文

云南营销型网站建设手把手指导做网站

云南营销型网站建设,手把手指导做网站,安徽安搜做的网站怎么样,创意设计网站【PAT甲级题解记录】1014 Waiting in Line (30 分) 前言 Problem:1014 Waiting in Line (30 分) Tags:模拟 双端队列 Difficulty:剧情模式 想流点汗 想流点血 死而无憾 Address:1014 Waiting in Line (30 分) 问题描述 银行有N个…

【PAT甲级题解记录】1014 Waiting in Line (30 分)

前言

Problem:1014 Waiting in Line (30 分)

Tags:模拟 双端队列

Difficulty:剧情模式 想流点汗 想流点血 死而无憾

Address:1014 Waiting in Line (30 分)

问题描述

银行有N个业务窗口,每个窗口可以排队M人,如果有多的人就在外面等,8点开始K个人按照输入顺序去办理业务,当外面等的人能进去排队时优先选择人少的队伍,如果一样就优先选择序号靠前的窗口。现在给定所有人的业务需要的时间,求每个人按照这个规则办完业务的时间。(只接受17点前开始办理的业务,坑点在于17点前办理的业务结束时间可能超过17点,所以输出时不能只判断结束时间还应考虑开始时间

解题思路

  1. 除了有一个坑点外这道题还是一道并不特别复杂的模拟题,由于是排队自然能想到利用队列去解决,这里可以使用双端队列方便队伍头部的处理。
  2. 思路是按照题目意思先初始化所有队列,包括N个双端队列(窗口排队队列)和一个在外面等的队列;
    • 每次循环都从N个队列的队头中确定出还需办理业务的最短时间,在这一次循环里,等于这个最短时间的所有队头客户都能解决业务,这些客户直接保存好时间后出队;
    • 剩余的队头客户则把各自剩余的办理时间减去前面求出来的最短时间,即更新正在办理业务的客户的剩余时间。
    • 一次循环结束后检查外队列,不为空则按照题目规则入窗口排队队列。
  3. 由于输出时需要知道每一个客户的编号,所以队列元素不仅仅是 “int” ,而应该是一个 “pair<int,int>”。
  4. 输出时需要判断开始时间是否超时,需要我们输入时根据客户编号存放业务时间,每个客户的业务结束时间减去这个时间就是开始时间。

参考代码

/** @Author: Retr0.Wu * @Date: 2022-02-16 15:08:36 * @Last Modified by: Retr0.Wu* @Last Modified time: 2022-02-16 20:35:23*/
#include <bits/stdc++.h>
using namespace std;
int main()
{int N, M, K, Q;cin >> N >> M >> K >> Q;deque<pair<int, int> > deq[21];queue<pair<int, int> > que;vector<int> time(K, 0);vector<int> time_len(K, 0);for (int i = 0; i < K; i++){int ktime;cin >> ktime;time_len[i] = ktime;if (i < N * M){deq[i % N].push_back(make_pair(i, ktime));}else{que.push(make_pair(i, ktime));}}int sumtime = 0;for (int i = 0; i < K; i++) // 至多K次,可能更少{int minn = 0x3f3f3f3f;for (int j = 0; j < N; j++){ // 遍历每一个柜台if (deq[j].empty())continue;int last = deq[j].front().second;minn = min(last, minn);}sumtime += minn; // 别忘了更新已流逝的时间for (int j = 0; j < N; j++){if (deq[j].empty())continue;int last = deq[j].front().second;int id = deq[j].front().first;last -= minn;  // 该客户剩余业务时间if (last == 0) // 该客户业务可以在此次遍历完成{time[id] = sumtime; // 该客户业务完成deq[j].pop_front();if (!que.empty()){deq[j].push_back(que.front());que.pop();}}else // 该客户业务不可以在此次遍历完成{deq[j].pop_front();deq[j].push_front(make_pair(id, last));}}}// for(int i=0;i<K;i++){//     cout<<i+1<<" : "<<time[i]<<endl;// }for (int i = 0; i < Q; i++){int id;cin >> id;if (time[id - 1] - time_len[id - 1] >= 540){cout << "Sorry" << endl;}else{printf("%02d:%02d\n", 8 + time[id - 1] / 60, time[id - 1] % 60);}}return 0;
}

总结

queue deque stack 等基础数据结构需要熟悉,模拟题一般都用的上。

http://www.yayakq.cn/news/142191/

相关文章:

  • net网站开发找那家怎么让关键词快速排名首页
  • 企业网站的类型wordpress 3.5
  • 做电影网站要很大的主机空间吗做网站所需要的资质
  • 网站关键词分析工具凡科登录入口官网
  • 网站都是每年续费的吗普洱高端网站建设价格
  • 阜阳建网站宣传彩页设计制作
  • 投资做网站品牌建设工作方案
  • 上海国际建设总承包公司网站宁波网站建设设计价格
  • 公司做的网站费用如何做账做网站一定要购买虚拟主机吗
  • 自己做免费手机网站吗微服务网站
  • 网站备案添加域名贵阳网站维护培训
  • 自建网站的流程青岛安装建设股份公司网站
  • 徐州建设网站的公司济南建设局官网
  • 图书馆网站建设需求分许百度竞价推广教程
  • 建设银行天津分行网站提供手机网站制作
  • 从写代码到网站运行不了了太原seo建站
  • 贵阳网站建设葫芦岛l礼品文化网站建设
  • 公司建立网站的作用有文档怎么做网站链接
  • 专业郑州企业网站建设wordpress代码高亮插件张戈
  • 网站制作公司费用学历提升快速拿证
  • 湖南企业网站制作公司安邦消防安全技术服务有限公司
  • 滨州市网站建设智通人才招聘网
  • 如何做优化网站排alexa优化绥化网站建设
  • 文学投稿网站平台建设软件开发公司前十名
  • 服装网站建设准备机构组织网站建设
  • 建e网站wordpress显示栏目名称
  • 竭诚网络网站建设企业计划书范文完整版
  • 怎么去做网站凤翔网站制作
  • 建设网站后需要什么知识写作网站挣钱对比
  • 学校网站要求WordPress百度收录内容