标签:
2 2 6 08:00 09:00 5 08:59 09:59 2 6 08:00 09:00 5 09:00 10:00
11 6
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct people { char st[20];//来的时间 char et[20];//走的时间 int sum; }arr[10010]; bool cmp(people a,people b) { return strcmp(a.et,b.et)<0; } int main() { int t,n,i; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;++i) scanf("%d %s %s",&arr[i].sum,arr[i].st,arr[i].et);//以前写过一道题,这个时间可以用字符串比较,因为是按照一定格式写的,所以以字符串输入没问题 sort(arr,arr+n,cmp); int cnt=arr[0].sum; for(i=1;i<n;++i) { if(strcmp(arr[i-1].et,arr[i].st)>0)//如果有公共部分 { cnt+=arr[i].sum; } else { cnt=arr[i].sum>cnt?arr[i].sum:cnt; } } printf("%d\n",cnt); } return 0; }
//ac代码
/* 题意为:用最少的座位数迎接在不同时间段来的客人 */ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[1000010]; int main() { int t,n,s; int i,j; int max; int hour1,hour2,min1,min2; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a));//一开始要清零 scanf("%d",&n); max=-100;//纪录最小的座位 for(i=0;i<n;++i) { scanf("%d %d:%d %d:%d",&s,&hour1,&min1,&hour2,&min2);//s表示这个时间段来的人数 int sum1=hour1*60+min1;//每个时间都有一个sum1和sum2这个区间 int sum2=hour2*60+min2; for(j=sum1;j<sum2;++j)//当两区间有公共部分时,数组a[i]刚才也存了一个数了 { a[j]+=s; if(a[j]>max)//当数组a纪录的座位数大于max,要把max更新 max=a[j]; } } printf("%d\n",max); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
HDU杭电4883 TIANKENG’s restaurant
标签:
原文地址:http://blog.csdn.net/yuzhiwei1995/article/details/47188817