饭店因为过于好吃而火爆了!
不同时段顾客数不同
但每个时段所有的顾客都要有椅子坐
也不要浪费多的椅子
所以
椅子数量只要刚好满足
- 顾客数最多时
所需椅子数即可
所以找一找什么时候人最多吧!
- 怎么找呢
因为时间是整数
因此是间断的不连续的
就可以用一个数组表示每一分钟的人数
然后找到人数最大值就好啦
代码如下
#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct customer{
int a;
int b;
int c;
}a[10010];
int main()
{
int t,n,hh1,mm1,hh2,mm2,sum[10010];
cin>>t;
while(t--)
{
cin>>n;
memset(sum,0,sizeof(sum));
for(int i=0;i<n;i++)
{
scanf("%d",&a[i].a);
scanf("%d:",&hh1);
scanf("%d",&mm1);
scanf("%d:",&hh2);
scanf("%d",&mm2);
a[i].b=hh1*60+mm1; //时间用分钟表示
a[i].c=hh2*60+mm2;
for(int j=a[i].b;j<a[i].c;j++ )
{
sum[j]=sum[j]+a[i].a ; ///每一分钟的人数
}
}
sort(sum,sum+2001);
cout<<sum[2000]<<endl;
}
return 0;
}