浙大pat 1017
#include<iostream>
#include<queue>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//说明:这道题目只要是17:00之前到的都会被处理,通俗点就是银行17:00之后不让进了
int N,K;struct Task{int arrive_time;int serve_time;int start_serve_time;int complete_time;//按照完成时间从小到大排序 friend bool operator<(Task t1,Task t2){return t1.complete_time>t2.complete_time; }
};
int cmp(Task t1,Task t2){return t1.arrive_time<t2.arrive_time;
}
Task task[10005]; priority_queue<Task> q;
//获取多少秒
int get_time(string str){int a=(str[0]-'0')*10+(str[1]-'0');int b=(str[3]-'0')*10+(str[4]-'0');int c=(str[6]-'0')*10+(str[7]-'0');return a*3600+b*60+c;
}int main(){scanf("%d%d",&N,&K);string a;int b;for(int i=1;i<=N;i++){cin>>a>>b;task[i].arrive_time=get_time(a);task[i].serve_time=b*60;}sort(task+1,task+N+1,cmp);int n=N;//忘记初始化了,导致WA,因为可能所有的任务都大于17*3600这样就会导致n没有初值 for(int i=1;i<=N;i++)if(task[i].arrive_time>17*3600){n=i-1;break;}double sum=0;if(n<=K){for(int i=1;i<=n;i++){if(task[i].arrive_time<8*3600){ task[i].start_serve_time=8*3600;sum+=(task[i].start_serve_time-task[i].arrive_time);} }if(n==0)printf("0.0\n");elseprintf("%.1f\n",sum*1.0/(60.0*n));}else{for(int i=1;i<=K;i++){if(task[i].arrive_time<8*3600)task[i].start_serve_time=8*3600;elsetask[i].start_serve_time=task[i].arrive_time;task[i].complete_time=task[i].start_serve_time+task[i].serve_time;sum+=(task[i].start_serve_time-task[i].arrive_time);q.push(task[i]);}for(int i=K+1;i<=n;i++){Task tmp=q.top();q.pop();if(task[i].arrive_time<=tmp.complete_time)task[i].start_serve_time=tmp.complete_time;elsetask[i].start_serve_time=task[i].arrive_time;task[i].complete_time=task[i].start_serve_time+task[i].serve_time;sum+=(task[i].start_serve_time-task[i].arrive_time);q.push(task[i]);}printf("%.1f\n",sum*1.0/(60.0*n));}return 0;
}
浙大pat 1017相关推荐
- 浙大pat | 浙大pat 牛客网PAT顶级(Top Level)练习题 1001
1001 LUCKY STRING 1872 8254 22% 题目描述 A string s is LUCKY if and only if the number of differentchara ...
- 浙大PAT甲级1040
浙大PAT甲级1040 原题 问题分析 原题 1040 Longest Symmetric String (25 分) Given a string, you are supposed to outp ...
- 浙大PAT甲级-1017
银行队列: (却没用到队列) #include <iostream> #include <string> #include <algorithm> #include ...
- PAT 1017 Queueing at Bank[一般]
1017 Queueing at Bank (25)(25 分)提问 Suppose a bank has K windows open for service. There is a yellow ...
- 浙大PAT甲级1019. General Palindromic Number (20)
1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- 浙大 PAT b1040
#include <stdio.h> #include <string.h> int main() {char str[100001];gets(str);int numT = ...
- 浙大PAT 1003题 1003. Emergency
本题用Dfs搜索或者Dijkstra算法都可以,当然也有其它的方法.这题感觉是pat中常见的类型,非常重要. Dfs搜索代码: #include<stdio.h> int road[510 ...
- 浙大PAT甲级1027. Colors in Mars (20)
1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...
- 浙大PAT甲级1006
1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
最新文章
- BERT可视化工具bertviz体验
- Linux C动态链接库实现一个插件例子
- 搭建自己的前端自动化测试脚手架(三)
- C#简单实现LRU缓存
- java应用性能指标_性能与可靠性:Java应用为何像F1汽车
- python basic programs
- 50. 熟悉与STL相关的Web站点
- 软件界旷世之架:测试驱动开发(TDD)之争
- html网页中使用mock,前端工具mock的使用 - 造数据模拟网络请求
- 【杂谈】为了子孙后代,请不要逃离大城市或者龟缩在三四线小城市
- adb shell网络命令nestat、ping、netcfg、ip操作实例解释
- 邻家的百万富翁(一)
- 音乐分类及处理——用机器学习的方法实现python
- excel筛选栏显示各项数量_excel筛选显示数量
- linux如何连接手机传文件,Ubuntu和手机通过蓝牙互传文件
- 解决启动filebeat时遇到Exiting: error unpacking config data: more than one namespace configured accessing错误
- java线上查看死锁
- Confluence 实现公司wiki
- 软科计算机科学与工程专业,2019上海软科世界一流学科排名计算机科学与工程专业排名德蒙福特大学排名第201-300...
- Python——变量和简单类型(下篇)