博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT A1017 优先队列
阅读量:6430 次
发布时间:2019-06-23

本文共 1253 字,大约阅读时间需要 4 分钟。

clipboard.png

这道题有点像优先队列的思想,简而言之就是挑选最小的入队处理,如果有多个队列就进行多个队列的处理;

借鉴的思想是采用记录每个队列中的任务完成时间,然后在读入任务的时候进行轮询,选择结束时间最小的那个队列,然后进行处理和等待时间的计算;

代码如下:

#include 
#include
#include
#include
#include
using namespace std;struct node { int come, time;} tempcustomer;bool cmp1(node a, node b) { return a.come < b.come;}int main() { int n, k; scanf("%d%d", &n, &k); vector
custom; for(int i = 0; i < n; i++) { int hh, mm, ss, time; scanf("%d:%d:%d %d", &hh, &mm, &ss, &time); int cometime = hh * 3600 + mm * 60 + ss; if(cometime > 61200) continue; tempcustomer = {cometime, time * 60}; custom.push_back(tempcustomer); } sort(custom.begin(), custom.end(), cmp1); vector
window(k, 28800); double result = 0.0; for(int i = 0; i < custom.size(); i++) { int tempindex = 0, minfinish = window[0]; for(int j = 1; j < k; j++) { if(minfinish > window[j]) { minfinish = window[j]; tempindex = j; } } if(window[tempindex] <= custom[i].come) { window[tempindex] = custom[i].come + custom[i].time; } else { result += (window[tempindex] - custom[i].come); window[tempindex] += custom[i].time; } } if(custom.size() == 0) printf("0.0"); else printf("%.1f", result / 60.0 / custom.size()); system("pause"); return 0;}

转载地址:http://bkiga.baihongyu.com/

你可能感兴趣的文章
框架源码系列二:手写Spring-IOC和Spring-DI(IOC分析、IOC设计实现、DI分析、DI实现)...
查看>>
asp.net编译 懒人脚本
查看>>
二分答案经典入门题:)
查看>>
为什么你需要将代码迁移到ASP.NET Core 2.0?
查看>>
思杰的雄心——软件定义的工作空间
查看>>
Servlet的多线程和线程安全
查看>>
存储树形的数据表转为Json
查看>>
CAN 总线通信控制芯片SJA1000 的读写
查看>>
oauth授权协议的原理
查看>>
OutputCache说明
查看>>
sdl2.0示例
查看>>
数学 --- 高斯消元 POJ 1830
查看>>
Ejabberd源码解析前奏--集群
查看>>
[ZHUAN]Flask学习记录之Flask-SQLAlchemy
查看>>
【转】Install SmartGit via PPA in Ubuntu 13.10/13.04/12.04/Linux Mint
查看>>
PNG怎么转换成32位的BMP保持透明
查看>>
经验分享:CSS浮动(float,clear)通俗讲解
查看>>
WTL中最简单的实现窗口拖动的方法(转)
查看>>
数据结构—队列
查看>>
C. Adidas vs Adivon
查看>>