1017. Queueing at Bank (25)
来源:互联网 发布:ie js 表格导出excel 编辑:程序博客网 时间:2024/05/16 09:03
题目大意:
银行有K个窗口,每个顾客需要在窗口前排队等待前面一个人服务的结束,计算平均等待时间
分析:
- 把时间以八点为基准,把到达时间换算成秒
- 按照到达时间排序从小到大排序
- 如果来的时候有空窗口那么就没有等待时间,否则最快完成窗口的完成时间 - 到达时间就是浪费的时间
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct a info;struct a{ char time[9];//到达时间 int needtime;//办理业务的时间 int HH, MM, SS;};void strToint(info* a)//str转换为int{ a->HH = (a->time[0] - '0') *10 + (a->time[1] - '0'); a->MM = (a->time[3] - '0') * 10 + (a->time[4] - '0'); a->SS = (a->time[6] - '0') * 10 + (a->time[7] - '0');}int cmp(const void* a, const void* b){ if (((info*)a)->HH != ((info*)b)->HH) return ((info*)a)->HH - ((info*)b)->HH; else { if (((info*)a)->MM != ((info*)b)->MM) return ((info*)a)->MM - ((info*)b)->MM; else return ((info*)a)->SS - ((info*)b)->SS; }}int find(int windows[], int K)//寻找最快完成的窗口的下标{ int min = 5000000, index; for (int i = 0; i < K; i++) if (windows[i] < min) { min = windows[i]; index = i; } return index;}int main(){ info dat[10001]; int N, K; scanf("%d%d", &N, &K); for (int i = 0; i < N; i++) { scanf("%s%d", dat[i].time, &(dat[i].needtime)); aToint(&dat[i]); getchar(); } qsort(dat, N, sizeof(struct a), cmp); int window[101]; for (int i = 0; i < K; i++) window[i] = 0; int i, waittime = 0, temp, min; for (i = 0; i < N; i++) { if (strcmp(dat[i].time, "17:00:01") >= 0) break; min = find(window, K);//min是最快完成窗口的下标 temp = (dat[i].HH - 8) * 3600 + dat[i].MM * 60 + dat[i].SS;//八点为基准,计算到达的秒 if (temp < 0) {//说明是八点以前来的 waittime += -temp; temp = 0; } if (window[min] >= temp) { waittime += window[min] - temp; window[min] += dat[i].needtime * 60;//转换成秒! } else window[min] = dat[i].needtime * 60 + temp;//不用等待 } if (i == 0) printf("0.0"); else printf("%.1f", waittime / (i*60.0)); return 0;}
0 0
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- 1017. Queueing at Bank (25)
- react-native的简单使用
- 近期工作总结
- xss 网站攻击
- c++输出当前时间
- 浏览器关闭事件
- 1017. Queueing at Bank (25)
- beego_开始之路
- RabbitMQ消息队列实现流程
- java对Date的年月日的加减运算
- python学习(仅作为个人学习笔记,记录零散知识点)
- Qt ScrollArea不出现滚动条及滚动条失效的解决办法以及所有控件保持最小尺寸而不再缩小的方法
- CentOS 7 安装VirtualBox
- 视觉跟踪项目(三)
- 设计模式学习之——生产消费模式