【模拟】Flo's Restaurant
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 2960 | Accepted: 929 |
Description
In the small restaurant, there are several two-seat tables, four-seat tables and six-seat tables. A single diner or a group of two diners should be arranged to a two-seat table, a group of three or four diners should be arranged to a four-seat table, and a group of five or six diners should be arranged to a six-seat table.
Flo's restaurant serves delicious food, and many people like to eat here. Every day when lunch time comes, the restaurant is usually full of diners. If there is no suitable table for a new coming group of diners, they have to wait until some suitable table is free and there isn't an earlier arrival group waiting for the same kind of tables. Kind Flo will tell them how long they will get their seat, and if it's longer than half an hour, they will leave for another restaurant.
Now given the list of coming diners in a day, please calculate how many diners take their food in Flo's restaurant. You may assume it takes half an hour for every diner from taking a seat to leaving the restaurant.
Input
A test case with A = B = C = 0 ends the input, and should not be processed.
Output
Sample Input
1 1 1
10:40 1
10:50 2
11:00 4
#
1 1 1
10:40 1
10:50 2
11:00 2
#
1 2 1
10:30 1
10:40 3
10:50 2
11:00 1
11:20 5
#
0 0 0
Sample Output
7
3
12
Source
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
inline int read(){
int x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
int A,B,C;
int le1[101],le2[101],le3[101];
int HH,MM,P;
int k[4];
char s[7];
int main(){
k[1]=read(),k[2]=read(),k[3]=read();
while(k[1]!=0||k[2]!=0||k[3]!=0){
int res=0;
memset(le1,0,sizeof(le1));
memset(le2,0,sizeof(le2));
memset(le3,0,sizeof(le3));
while(1){
cin>>s;
if(s[0]=='#') break;
HH=0;
int tmp=1,e=1;
for(tmp=0;s[tmp]!=':';tmp++) ;
for(int i=tmp-1;i>=0;i--)
HH+=((s[i]-'0')*e),e*=10;
MM=0,e=1;
for(int i=strlen(s)-1;i>tmp;i--) MM+=((s[i]-'0')*e),e*=10;
int T=(HH-7)*60+MM;
//cout<<T<<endl;
P=read();
P++;
if(P/2==1&&k[1]){
P--;
sort(le1,le1+k[1]);
if(le1[0]-T<=30){
// cout<<"true"<<endl;
res+=P;
if(le1[0]>=T) le1[0]+=30;
else le1[0]=T+30;
}
}
else if(P/2==2&&k[2]){
P--;
sort(le2,le2+k[2]);
if(le2[0]-T<=30){
//cout<<"true2"<<endl;
res+=P;
if(le2[0]>=T) le2[0]+=30;
else le2[0]=T+30;
}
}
else if(P/2==3&&k[3]){
P--;
sort(le3,le3+k[3]);
if(le3[0]-T<=30){
//cout<<"true3"<<endl;
res+=P;
if(le3[0]>=T) le3[0]+=30;
else le3[0]=T+30;
}
}
}
printf("%d\n",res);
k[1]=read(),k[2]=read(),k[3]=read();
}
}
/*
1 3 2
09:45 3
09:46 5
09:59 4
10:00 1
10:01 3
10:20 3
10:30 2
11:20 5
11:40 1
12:00 3
12:10 2
14:20 5
15:00 3
15:20 6
15:40 5
17:30 2
19:00 6
19:40 4
20:03 4
20:05 4
21:40 2
21:44 1
22:00 1
#
*/
【模拟】Flo's Restaurant的更多相关文章
- HDU 1103 Flo's Restaurant(模拟+优先队列)
Flo's Restaurant Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Flo's Restaurant[HDU1103]
Flo's Restaurant Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 九校模拟——餐馆(restaurant)
1 餐馆(restaurant) 1.1 题目背景 铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加. 1.2 题目描述 共有n 种食材,一份食材i 需要花ti 小时不间断地进行播种,施肥 ...
- 别人整理的DP大全(转)
动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- [转] POJ DP问题
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
- POJ动态规划题目列表
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
- POJ 动态规划题目列表
]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322 ...
- DP题目列表/弟屁专题
声明: 1.这份列表不是我原创的,放到这里便于自己浏览和查找题目. ※最近更新:Poj斜率优化题目 1180,2018,3709 列表一:经典题目题号:容易: 1018, 1050, 1083, 10 ...
随机推荐
- Spring 路由地址的基本使用
1.下面是spring的使用基本框架连接 https://www.cnblogs.com/HD/p/4103239.html
- C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?
新建一个Console应用程序,项目名称为“FileSystemWatcher”,Copy代码进,编译后就可以用了.代码如下: using System; using System.Collectio ...
- Python脚本 - 常用单位转换
测试系统为:Centos 6.7 Python版本为: 3.6.4 脚本功能:常用单位的转换,这里用内存来模拟 import pstuil def bytes2human(n): symbols = ...
- centos7下opencv的安装
os:centos7 opencv:opencv3.0.0 for linux reference:http://www.cnblogs.com/xixixing/p/6096057.html det ...
- 如何在苹果官网下载旧版本的Xcode
如何在苹果官网下载旧版本的Xcode 前段时间XcodeGhost事件让很多应用中招,不乏一些知名的互联网公司开发的应用.事件的起因是开发者使用了非官方的Xcode,这些Xcode带有xcodegho ...
- 看懂sh脚本
1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编写脚本完成时 ...
- [转]6个HelloWorld
原文地址:点击打开链接 转这个帖子,是因为看了这个帖子使我明白了一个道理:一旦你发散自己的思维,激发自己的创意,就会发现原来编程是这么的好玩. 原文标题为<6个变态的C语言Hello World ...
- K8s的内部Pod之间都不通,搞了快两天
试了不亚于二十种方法,绝望的时候,回到了家. 想手工安装,又遇到flannel在手工下,会更改docker启动项的不完善. cni,或许就是k8s的大方向吧. 最后,抱着试一试的态度,将flannel ...
- React Native - 5 ListView实现图文混排
首先在根目录下建一个images文件夹,准备好图片 准备datasource 准备图片资源 准备renderRow方法 记得要import相应的类,ListView, Image, Touchable ...
- 【bzoj1132】[POI2008]Tro 计算几何
题目描述 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 输入 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000] 输出 保留 ...