Booking

Pierre is in great trouble today! He is responsible for managing the bookings for the ACM (Acco- modation with Moderate Costs) hotel and has just realized that the booking software has a severe   bug. It has created overlapping and wrong room assignments. Pierre is now worried that the hotel might be overbooked. Since the software manufacturer is neither very responsive nor competent, he must check this himself, so that he can timely take countermeasures if necessary.

Fortunately, Pierre was able to export all original bookings (including reservation codes plus correct and valid dates of arrival and departure). The only information that got lost is the time of the booking placements, so that Pierre cannot retrieve any booking priorities (e.g., first-come-first-serve). Using  the available information, could you please help Pierre out and tell him a room assignment with the minimum number of rooms that satisfies all bookings? Please be aware that a room must always be cleaned before reuse. Since Pierre does not want to take any risks, he tells you to only consider the maximum cleaning time.

Input

The input consists of several lines. The first line contains 1 ≤ T ≤ 100, the number of test cases. Each test case starts with a line containing two integers 1 ≤ B ≤ 5 000, the number of bookings, and 0 ≤ C ≤ 360, the cleaning time (in minutes) for one room.

Then follow B lines, each containing the reservation code (a random alphanumeric string of up 20 characters) and the dates of arrival and departure of one booking. Dates are given as strings in the format "YYYY-MM-DD HH:MM" (see example test case), where reservations are only for the years 2013 until 2016.

Output

For each test case, print the minimum number of needed rooms on a single line without any additional blanks. Be aware of leap years but ignore daylight saving time.

Sample Input

4
2 120
1 2013-07-01 15:59 2013-07-08 16:30
2 2013-07-08 17:30 2013-07-15 12:00
3 60
65 2013-07-08 14:30 2013-07-08 16:00
32 2013-07-01 16:00 2013-07-15 12:00
91 2013-07-01 16:00 2013-07-08 15:00
2 360
a7 2016-02-21 14:00 2016-02-28 21:00
xx 2016-03-01 01:00 2016-03-02 12:57
2 60
a9 2016-02-21 14:00 2016-02-28 11:00
a8 2016-02-28 12:00 2016-03-11 21:00

Sample Output

2
3
1
1

题意

有n个客人预订房间,但是客人预定的房间给弄乱了,Pierre打扫房间需要m分钟,给出客人预订房间的开始时间和结束时间,求最少要为客人准备多少间房间

思路

活动安排问题模板题,主要是讲给出来的年月日那个时间划分成一个统一的时间标准(以某一个时间作为时间的开始点,时间统一为和该时间点相差多少分钟),然后套模板就能过了(这么简单的题我竟然没有写,当时想到用这个贪心了,但是感觉过不了,就没写QAQ)

活动安排问题讲解传送门:https://blog.csdn.net/wang_123_zy/article/details/79323417

AC代码

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <string>
#define ll long long
#define ull unsigned long long
#define ms(a) memset(a,0,sizeof(a))
#define pi acos(-1.0)
#define INF 0x7f7f7f7f
#define lson o<<1
#define rson o<<1|1
const double E=exp(1);
const int maxn=1e5+10;
const int mod=1e9+7;
using namespace std;
int times[12]={0,44640,84960,129600,172800,217440,260640,305280,349920,393120,437760,480960};
int a[maxn],b[maxn];
int main(int argc, char const *argv[])
{
int t;
char ch[100];
int id,year,month,day,hour,minute;
scanf("%d",&t);
int n,m;
while(t--)
{
int ans=1;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%s %d-%d-%d %d:%d",ch,&year,&month,&day,&hour,&minute);
if(year==2016&&month>2)
a[i]=(year-2013)*525600+times[month-1]+(day-1)*1440+hour*60+minute+1440;
else
a[i]=(year-2013)*525600+times[month-1]+(day-1)*1440+hour*60+minute;
scanf("%d-%d-%d %d:%d",&year,&month,&day,&hour,&minute);
if(year==2016&&month>2)
b[i]=(year-2013)*525600+times[month-1]+(day-1)*1440+hour*60+minute+1440;
else
b[i]=(year-2013)*525600+times[month-1]+(day-1)*1440+hour*60+minute;
}
int i,k;
sort(a,a+n);
sort(b,b+n);
int sum=0;
for(i=0,k=0;i<n;i++)
{
if(a[i]-b[k]<m)
sum++;
else
k++;
}
printf("%d\n",sum);
}
return 0;
}

German Collegiate Programming Contest 2013-B:Booking(贪心)的更多相关文章

  1. German Collegiate Programming Contest 2013:E

    数值计算: 这种积分的计算方法很好,学习一下! 代码: #include <iostream> #include <cmath> using namespace std; ; ...

  2. German Collegiate Programming Contest 2013:B

    一个离散化的简单题: 我用的是STL来做的离散化: 好久没写离散化了,纪念一下! 代码: #include<cstdio> #include<cstring> #include ...

  3. The Ninth Hunan Collegiate Programming Contest (2013) Problem A

    Problem A Almost Palindrome Given a line of text, find the longest almost-palindrome substring. A st ...

  4. The Ninth Hunan Collegiate Programming Contest (2013) Problem F

    Problem F Funny Car Racing There is a funny car racing in a city with n junctions and m directed roa ...

  5. The Ninth Hunan Collegiate Programming Contest (2013) Problem H

    Problem H High bridge, low bridge Q: There are one high bridge and one low bridge across the river. ...

  6. The Ninth Hunan Collegiate Programming Contest (2013) Problem I

    Problem I Interesting Calculator There is an interesting calculator. It has 3 rows of button. Row 1: ...

  7. The Ninth Hunan Collegiate Programming Contest (2013) Problem J

    Problem J Joking with Fermat's Last Theorem Fermat's Last Theorem: no three positive integers a, b, ...

  8. The Ninth Hunan Collegiate Programming Contest (2013) Problem G

    Problem G Good Teacher I want to be a good teacher, so at least I need to remember all the student n ...

  9. The Ninth Hunan Collegiate Programming Contest (2013) Problem L

    Problem L Last Blood In many programming contests, special prizes are given to teams who solved a pa ...

随机推荐

  1. Java 正则校验整数,且只能是非0开头

    function checkNum(obj){ //修复第一个字符是小数点 的情况. if(obj.value !=''&& obj.value.substr(0,1) == '.') ...

  2. Linux c++ time different

    下面这个函数可以得到微秒级别: #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); 函数&q ...

  3. nyoj-0469-擅长排列的小明 II(找规律)

    nyoj-0469-擅长排列的小明 II 思路:递推分析:为了简便起见,我们用Ai代表第i个数字 , 由于A1一直是1,所以A2只能是2或3.假设dp[n]表示1->n这个序列的方案数      ...

  4. 1-MAVEN 仓库

    本地资源库     MAVEN的本地资源库是用来存储所有项目的依赖关系(插件和其他文件,这个文件被MAVEN 下载到本地文件中.) 可以通过修改MAVEN安装目录下conf/setting.xml配置 ...

  5. Win10系列:VC++ Direct3D开发基础1

    在介绍如何使用Direct3D项目模版来绘制立体图形之前,首先为读者介绍在Direct3D应用程序开发过程中涉及到的一些常用概念. (1)资源 资源是指可以被Direct3D图形管线所访问的内存空间, ...

  6. Android 音视频深入 五 完美的录视频(附源码下载)

    本篇项目地址,名字是录视频,求star https://github.com/979451341/Audio-and-video-learning-materials 这一次的代码录视频在各个播放器都 ...

  7. 女生可不可以进入IT行业做Linux运维工程师?

    不知从何时起有那么一个不成文的理论:女生不适合做IT.在很多人看来,IT is a men’s world,女生学IT是件匪夷所思的事情.在传统的思维当中,女生只适合从事像教师.会计.公务员等稳定的职 ...

  8. tidb使用坑记录

    转载自:https://www.cnblogs.com/linn/p/8459327.html tidb使用坑记录 1.对硬盘要求很高,没上SSD硬盘的不建议使用 2.不支持分区,删除数据是个大坑. ...

  9. GFS中文翻译

    Google文件系统 GFS是一个可扩展的分布式文件系统,用于大型的.分布式的.对大量数据进行访问的应用.它运行于廉价的普通硬件上,但可以提供容错功能.它可以给大量的用户提供总体性能较高的服务. 1. ...

  10. java中的方法method

    java中的方法必须存在于类class里,不能独立存在.类是描述具有某种特征的事物,方法则是这类 事物具有的某种功能,通过调用方法可以实现某种特定的功能.方法名一般以小写的动词开头. 例: publi ...