复杂模拟 | 1017 模拟N个顾客M个柜台进行排队
2024-09-04 23:16:22
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 1010
#define MAX (1<<30)+1
#define V vector<int> using namespace std; struct Customer{
int comeTime;
int serveTime;
Customer(int c,int s):comeTime(c),serveTime(s){
}
}; bool cmp(Customer a,Customer b){
return a.comeTime<b.comeTime;
} int processTime(int H,int M,int S){
return H*+M*+S;
} int windowEnd[];//每个窗口的结束时间 int main(){
// freopen("1017.txt","r",stdin);
int N,M,i,j,hh,mm,ss,p;
I("%d %d",&N,&M);
int startTime=processTime(,,);
int endTime=processTime(,,);
vector<Customer> C;
FF(i,M) windowEnd[i]=startTime; //初始化每个窗口的开始时间
while(N--){
I("%d:%d:%d %d",&hh,&mm,&ss,&p);
int thisTime=processTime(hh,mm,ss);
if(thisTime>endTime) continue;
p*=;
p=min(p,); //处理排队超时
C.push_back(Customer(thisTime,p));
}
sort(C.begin(),C.end(),cmp);
int wait=;
//对于每一个顾客进行处理
FF(i,C.size()){
//选择一个最早结束的
int minTime=MAX,mI;
FF(j,M) {
if(windowEnd[j]<minTime){
minTime=windowEnd[j];
mI=j;
}
}
if(windowEnd[mI]>C[i].comeTime){ //顾客来早了,需要等待
wait+=windowEnd[mI]-C[i].comeTime;
windowEnd[mI]+=C[i].serveTime;
}else{ //顾客不用等待
windowEnd[mI]=C[i].comeTime+C[i].serveTime;
}
}
O("%.1f\n",wait/60.0/C.size());
return ;
}
最新文章
- solaris tar 命令exclude使用
- [java] java解析txt文件
- Android新浪微博获取评论信息、发表评论、转发微博等
- Enum:Backward Digit Sums(POJ 3187)
- Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)
- Mysql中查找并删除重复数据的方法
- KVM 命令行启动第一台虚拟机
- Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL
- python整数与IP地址转换
- linux 怎么与网络对时
- Eclipse插件的安装(手动安装),以安装SVN插件和中文语言包为例
- ios的单元測试OCUnit以及更新了之后的XCTestCase
- Lua中的closure(闭合函数)
- mysql 中 max_allowed_packet 查询和修改
- mysql 连接超时解决方案: 怎样修改默认超时时间
- linux中创建一个回收站
- python sys模块使用详情
- Python3 Tkinter-Pack
- 每天一个Linux命令(31)diff命令
- 应验log4j.xml时不能找到log4j.dtd