1014. Waiting in Line (30)
来源:互联网 发布:node gzip压缩 编辑:程序博客网 时间:2024/05/22 06:13
模拟的题。
代码如下:
#include"stdio.h"#include"string.h"#include"math.h"#include<iostream>#include<vector>#include<set>#include<queue>#include<string>#include<algorithm>using namespace std;#define INF 0x7FFFFFFFstruct customer{ int startTime; int processingTime; int leaveTime;};int n,m,k,q; vector<struct customer> customers; vector<int> queries; vector<queue<int>> bank;int main(){ scanf("%d %d %d %d",&n,&m,&k,&q); bank.resize(n); vector<int> baseTime(n,0); customers.resize(k); for(int i = 0;i < k;i++){ int temp; scanf("%d",&temp); customers[i].processingTime = temp; } queries.resize(q); for(int i = 0;i < q;i++){ int temp; scanf("%d",&temp); temp--; queries[i] = temp; } int p = 0; for(;p < m*n && p < k;p++){ //题目很明确的说,如果队列没满,就是很顺序的排序。 //漏了个p<k所以总是报短段错误。 customers[p].leaveTime = baseTime[p%n]+customers[p].processingTime; baseTime[p%n] = customers[p].leaveTime; bank[p%n].push(p); } //队列外的人 for(;p < k;p++){ int mmin = INF; int index = -1; for(int i = 0;i < n;i++){ int top = bank[i].front(); //本来自己写这里,老师想着直接用i%x(某一个x),然后来获得队首的值,有一个模拟队列,就漂亮多了。 //注,这里是获得队尾元素。。理解错误。 if(customers[top].leaveTime < mmin){ mmin = customers[top].leaveTime; index = i; } } //pop and push customers[p].leaveTime = baseTime[index] + customers[p].processingTime; baseTime[index] = customers[p].leaveTime; bank[index].pop(); bank[index].push(p); } for(int i = 0;i < q;i++){ if(customers[queries[i]].leaveTime - customers[queries[i]].processingTime >= 540){ //之所以要见processingtime, //因为如果16:55来一个人,但17:05才走,是可以的 printf("Sorry\n"); }else{ printf("%02d:%02d\n", 8+customers[queries[i]].leaveTime/60, customers[queries[i]].leaveTime%60); } } return 0;}
0 0
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- 1014. Waiting in Line (30)
- activity 与 service 之间的通信
- mtime,atime,ctime的区别,find命令的使用
- 使用Android MediaPlayer播放媒体文件
- 邮件发送demo源码
- Android 对封装RecyclerView.Adapter讲解
- 1014. Waiting in Line (30)
- 曲面参数化定义
- SQL语言基础
- linux中0号任务的创建以及堆栈初始化
- FansUnion:粉丝经济,已经称为主流
- [Linux]文件的atime ctime mtime
- Mac下修改hosts
- 常用设计者模式---策略模式
- 算法导论 红黑树 学习 删除(四)