题目: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; }
时间: 2024-10-11 21:07:00