TIANKENG’s restaurant
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 1606 Accepted Submission(s): 577
Problem Description
TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of customers come to have meal because of its delicious dishes. Today n groups of customers come to enjoy their meal, and there are Xi persons in the
ith group in sum. Assuming that each customer can own only one chair. Now we know the arriving time STi and departure time EDi of each group. Could you help TIANKENG calculate the minimum chairs he needs to prepare so that every customer can take a seat when
arriving the restaurant?
Input
The first line contains a positive integer T(T<=100), standing for T test cases in all.
Each cases has a positive integer n(1<=n<=10000), which means n groups of customer. Then following n lines, each line there is a positive integer Xi(1<=Xi<=100), referring to the sum of the number of the ith group people, and the arriving time STi and departure time Edi(the time format is hh:mm, 0<=hh<24, 0<=mm<60), Given that the arriving time must be earlier than the departure time.
Pay attention that when a group of people arrive at the restaurant as soon as a group of people leaves from the restaurant, then the arriving group can be arranged to take their seats if the seats are enough.
Each cases has a positive integer n(1<=n<=10000), which means n groups of customer. Then following n lines, each line there is a positive integer Xi(1<=Xi<=100), referring to the sum of the number of the ith group people, and the arriving time STi and departure time Edi(the time format is hh:mm, 0<=hh<24, 0<=mm<60), Given that the arriving time must be earlier than the departure time.
Pay attention that when a group of people arrive at the restaurant as soon as a group of people leaves from the restaurant, then the arriving group can be arranged to take their seats if the seats are enough.
Output
For each test case, output the minimum number of chair that TIANKENG needs to prepare.
Sample Input
2 2 6 08:00 09:00 5 08:59 09:59 2 6 08:00 09:00 5 09:00 10:00
Sample Output
11 6
题意:
给出客人的数量和客人来的时间和离开的时间,求出该天需要多少个椅子才能保证所有的客人都能每人一个.....
一般思路:
如果区间有重复的,就需要这两次客人的次数相加,依次判断下去,求得需要的最大值.......
扯一下思路.....
这个题,做的时候先是考虑的字符串,结果超时了........后来花了很长时间去优化,还是不行,最后想了想,果断把字符型转化为整数来处理了.................
但是区间重复求贪心的是真没做过了,本来是想用双循环依次判断,后来不知道为啥还不行,晕了.....
学长讲了这道题,竟然是打表过的,当时瞬间就开拓了思路,没想到还可以这样做......然后自己也用这个做法写一遍,感觉好巧妙,
不过下面的代码是自己感觉更简练的代码了..........
#include<stdio.h>
#include<string.h>
int main()
{
int t,i,j,p,a,b,c,d,x[2005];
scanf("%d",&t);
while(t--)
{
memset(x,0,sizeof(x));
int sum=0,n;
scanf("%d",&n);
for(i=0;i<n;++i)
{
scanf("%d %d:%d %d:%d",&p,&a,&b,&c,&d);
int beg=a*60+b;//把时间转化为分钟,计算量省去了很多
int end=c*60+d;
for(j=beg;j<end;++j)
{
x[j]+=p;
sum=(sum>x[j])?sum:x[j];//这样一直更新最大值
}
}
printf("%d\n",sum);
}
return 0;
}