HDU4883TIANKENG’s restaurant

本文介绍了一道名为“TIANKENG’s restaurant”的编程题的解题思路及实现代码。该问题涉及顾客到达与离开的时间,求解餐厅所需最少椅子数量。采用时间戳标记方法,记录顾客到离事件,通过遍历并维护最大同时在场顾客数来求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值