hdu4883

hdu4883

用一维数组模拟时间轴,某个时刻来了num个顾客,就在这个时间点累加num  并且再离开的时间点累加 -num

最后对整个数组   遍历累加  累加过程中最大的值 就是店内顾客同时吃饭最多的人数  也就是答案

代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1600;
int a[maxn];
int h1,m1,h2,m2,num,sum,T,n,ans;
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        memset(a,0,sizeof(a));
        for(int i=0;i<n;i++){
            scanf("%d %d:%d %d:%d",&num,&h1,&m1,&h2,&m2);
            a[h1*60+m1]+=num;
            a[h2*60+m2]+=-num;
        }
        ans=0;sum=0;
        for(int i=0;i<=24*60+59;i++){
            sum+=a[i];
            ans=max(ans,sum);
        }
        printf("%d\n",ans);
    }
}

猜你喜欢

转载自blog.csdn.net/holly_Z_P_F/article/details/81386967