题目描述
我们已经知道了,东东有很多的女朋友。每个女朋友都要东东陪她们,但是现在东东的女朋们每天也都需要上课,所以不可能一整天都有时间。现在的问题是,给出东东女朋友每一天的空闲时间,问东东最少用多少天可以陪每个女朋友至少一次。因为东东还要留很多时间来学习算法呢。当然当东东在陪一个女朋友时间段内不可以同时去陪另一个女朋友。
输入
第一个数t表示有t组测试实例,每组测试实例的第一个数n(n<=100)表示东东有n个女朋友。接下来的n行,每行有两个数s,e表示东东的女朋友的空闲时间的起始时间和终止时间(0 < s<=e<=24)。
输出
输出东东所需要的最少的天数来陪他的女朋友们
样例输入
1
3
1 8
2 3
4 7
样例输出
2
来源
2010新生赛
刚开始可能会有很多人想到贪心算法,但仔细读题其实还是略差别的,题意并不是东东一天内可以陪多少个女朋友而是他最少多少天可以陪完所有女朋友。那么就简单了,直接开一个数组,把时间重叠的部分累加,最大即是最少时间。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i,mx,t,c[25] = {0},n;
int a,b;
scanf("%d",&t);
while(t--)
{
memset(c,0,sizeof(c));
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&a,&b);
for(i = a;i <= b;i++)
{
c[i]++;
}
}
mx = -1;
for(i = 0;i <= 24;i++)
mx = max(c[i],mx);
printf("%d\n",mx);
}
return 0;
}