称号:

TIANKENG’s restaurant

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)

Total Submission(s): 249    Accepted Submission(s): 125

Problem Description
TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of customers come to have meal because of its delicious dishes. Today n groups of customers come to enjoy their meal, and there are Xi persons
in the ith group in sum. Assuming that each customer can own only one chair. Now we know the arriving time STi and departure time EDi of each group. Could you help TIANKENG calculate the minimum chairs he needs to prepare so that every customer can take a
seat when arriving the restaurant?

 
Input
The first line contains a positive integer T(T<=100), standing for T test cases in all.



Each cases has a positive integer n(1<=n<=10000), which means n groups of customer. Then following n lines, each line there is a positive integer Xi(1<=Xi<=100), referring to the sum of the number of the ith group people, and the arriving time STi and departure
time Edi(the time format is hh:mm, 0<=hh<24, 0<=mm<60), Given that the arriving time must be earlier than the departure time.



Pay attention that when a group of people arrive at the restaurant as soon as a group of people leaves from the restaurant, then the arriving group can be arranged to take their seats if the seats are enough.
 
Output
For each test case, output the minimum number of chair that TIANKENG needs to prepare.
 
Sample Input
2
2
6 08:00 09:00
5 08:59 09:59
2
6 08:00 09:00
5 09:00 10:00
 
Sample Output
11
6
 

解题思路:

转换为RMQ问题,1天24h,1440min;a[i]表示第i分钟的人数,n表示时间[t1,t2)之间来的人数,对这个区间内的a[i]+n,最后求的是a[i]的最大值。

解法1:模拟

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; #define clr(a) memset(a, 0, sizeof(a))
#define rep(i,s,t) for(int i = s; i <= t; ++i)
#define per(i,s,t) for(int i = s; i >= t; --i) const int MAXN = 1450;
int t, n, a[MAXN]; int main()
{
scanf("%d", &t);
while(t--)
{
clr(a);
scanf("%d", &n);
int num, h1, m1, h2, m2;
rep(i,0,n-1)
{
scanf("%d%d:%d%d:%d", &num, &h1, &m1, &h2, &m2);
int s1 = h1 * 60 + m1, s2 = h2 * 60 + m2;
rep(j,s1,s2-1) a[j] += num;
}
int ans = -1;
rep(i,0,MAXN-1) ans = max(ans,a[i]);
printf("%d\n", ans);
}
return 0;
}

解法2:线段树(ZKW)

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; #define clr(a) memset(a, 0, sizeof(a))
#define rep(i,s,t) for(int i = s; i <= t; ++i)
#define per(i,s,t) for(int i = s, i >= t; --i) const int M = 1<<11, MAXN = 1440;
int icase, n, a[M << 1]; void Add_x(int s, int t, int x)
{
int b = 0;
for(s=s+M-1, t=t+M+1; s^t^1; s>>=1, t>>=1)
{
if(~s&1) a[s^1] += x;
if( t&1) a[t^1] += x;
b = max(a[s], a[s^1]), a[s]-=b, a[s^1]-=b, a[s>>1]+=b;
b = max(a[t], a[t^1]), a[t]-=b, a[t^1]-=b, a[t>>1]+=b;
// printf("%d %d %d %d\n", s, t, a[s^1], a[t^1]);
}
for( ; s > 1; s>>=1)
b = max(a[s], a[s^1]), a[s]-=b, a[s^1]-=b, a[s>>1]+=b;
} int Max(int s, int t)
{
int lans = 0, rans = 0, ans = 0;
for(s=s+M-1,t=t+M+1; s^t^1; s>>=1, t>>=1)
{
lans+=a[s], rans+=a[t];
if(~s&1) lans = max(lans, a[s^1]);
if( t&1) rans = max(rans, a[t^1]);
// printf("%d %d %d %d\n", s, t, lans, rans);
}
ans = max(lans+a[s], rans+a[t]);
while(s>1) ans+=a[s>>=1];
return ans;
} void show()
{
for(int i = 0; i < M; i++)
printf("%d ", a[i]);
printf("\n");
} int main()
{
scanf("%d", &icase);
while(icase--)
{
scanf("%d", &n); clr(a);
int num, h1, m1, h2, m2;
for(int i = 0; i < n; ++i)
{
scanf("%d%d:%d%d:%d", &num, &h1, &m1, &h2, &m2);
int s1 = h1 * 60 + m1, s2 = h2 * 60 + m2;
Add_x(1+s1, s2, num);
}
// show();
printf("%d\n", Max(1,1440));
}
return 0;
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

HDOJ 4883 TIANKENG’s restaurant的更多相关文章

  1. hdoj 4883 TIANKENG’s restaurant【贪心区间覆盖】

    TIANKENG’s restaurant Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/O ...

  2. HDU 4883 TIANKENG’s restaurant Bestcoder 2-1(模拟)

    TIANKENG's restaurant Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/O ...

  3. 杭电 4883 TIANKENG’s restaurant (求饭店最少需要座椅)

    Description TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of custo ...

  4. HDU 4883 TIANKENG’s restaurant

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4883 解题报告:一家餐馆一天中有n波客人来吃饭,第 i 波  k 客人到达的时间是 s ,离开时的时间 ...

  5. HDU 4883 TIANKENG’s restaurant (贪心)

    链接:pid=4883">带我学习.带我飞 第一次BC,稳挂,WA n多次.今天又一次做了一下 略挫 #include <iostream> #include <cs ...

  6. hdu4886 TIANKENG’s restaurant(Ⅱ) (trie树或者模拟进制)

    TIANKENG’s restaurant(Ⅱ) Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 130107/65536 K (Ja ...

  7. HDU 4886 TIANKENG’s restaurant(Ⅱ) ( 暴力+hash )

    TIANKENG’s restaurant(Ⅱ) Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 130107/65536 K (Ja ...

  8. TIANKENG’s restaurant HDU - 4883 (暴力)

    TIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of customers come to ...

  9. HDU 4883 Best Coder Round 2 TIANKENG’s restaurant 解读

    有一组数据是在客人到达和出发时间,问:多少把椅子的能力,以满足所有客人的需求,可以有一个地方坐下要求. 有些人甚至开始考虑暴力法,这些数据是少,其实这个问题很多数据, 暴力需求O(n*n)的时间效率, ...

随机推荐

  1. javascript 入门之简单换肤效果

    大家好,我是小强老师,这里简单入门 做一个换肤效果 效果如图所示: 这个案例思路分为两部分: 获取元素对象. var pic1 = document.getElementById('pic1'); v ...

  2. 基于visual Studio2013解决C语言竞赛题之0518回文数

     题目

  3. Java 找出四位数的全部吸血鬼数字 基础代码实例

    /**  * 找出四位数的全部吸血鬼数字  * 吸血鬼数字是指位数为偶数的数字,能够由一对数字相乘而得到,而这对数字各包括乘积的一半位数的数字,当中从最初的数字中选取的数字能够随意排序.  * 以两个 ...

  4. iOS9适配系列教程

    链接地址:http://www.open-open.com/lib/view/open1443194127763.html 中文快速导航: iOS9网络适配_ATS:改用更安全的HTTPS(见Demo ...

  5. PostgreSQL正则表达式查询

    参考http://www.php100.com/manual/PostgreSQL8/functions-matching.html LIKE string LIKE pattern [ ESCAPE ...

  6. 01-IOSCore - NSString、NSFileManager、NSBundle、StringAndObjectConvert

    模型 1 将数据存储到硬盘,将硬盘上的数据在读回内存 2 文件存储: NSFileHandle 对文件的读写 NSData 二进制数据 NSString 表示文件路径 NSFileManager(对文 ...

  7. mysql事务和锁InnoDB(转)

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  8. IE6 png图片实现半透明的方法

    IE6中支持PNG半透明图片完美解决方法-divcss5亲測 从IE7及IE7以上版本号都支持PNG半透明格式图片,而只有IE6不支持png格式透明图片,而GIF半透明效果不及png半透明格式图片,由 ...

  9. UML看书笔记1:主体思想

    对象设计需要解决的三大问题:      1.把“现实世界”映射到“对象世界”      2.从“对象世界”描述“现实世界”      3.验证“对象世界”是否反映了“现实世界” 现实世界与我们的对象世 ...

  10. 【linux】linux内核移植错误记录

       欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http ...