题目:HDU4883TIANKENG’s restaurant
题目大意:一间餐厅,给你每组客人的人数和来的时间,离开的时间,问最少需要的椅子。
解题思路:这题本来想用区间覆盖做,可是后面发觉不太对。这题貌似暴力也是可以过的,因为时间才1440.其中的一种做法:把每个区间的开始和结束时间点都标记上是来人还是走人,对应的椅子数加上减去。然后在枚举一下时间,在这个过程中维护椅子的最大值。也可以把出入的时间点记录下来,因为这些时间点人数是在变化的,然后也是维护最大值,但是要记得重复的时间点不要加多次。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 2005;
int c[N];
int main () {
int T;
int num, h, m;
int ans, n;
scanf ("%d", &T);
while (T--) {
scanf ("%d", &n);
memset (c, 0, sizeof (c));
for (int i = 0; i < n; i++) {
scanf ("%d", &num);
scanf ("%d:%d", &h, &m);
c[h * 60 + m] += num;
scanf ("%d:%d", &h, &m);
c[h * 60 + m] -= num;
}
int ans = 0;
int tmp = 0;
for (int i = 0; i < N; i++) {
tmp += c[i];
if (tmp > ans)
ans = tmp;
}
printf ("%d\n", ans);
}
return 0;
}