HDU4883TIANKENG’s restaurant

题目: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;
}


你可能感兴趣的:(HDU4883TIANKENG’s restaurant)