牛骨文教育服务平台(让学习变的简单)
博文笔记

zzuli1210 东东的女朋友(二)(水)

创建时间:2016-10-28 投稿人: 浏览次数:1442

Description

我们已经知道了,东东有很多的女朋友。每个女朋友都要东东陪她们,但是现在东东的女朋们每天也都需要上课,所以不可能一整天都有时间。现在的问题是,给出东东女朋友每一天的空闲时间,问东东最少用多少天可以陪每个女朋友至少一次。因为东东还要留很多时间来学习算法呢。当然当东东在陪一个女朋友时间段内不可以同时去陪另一个女朋友。

Input

第一个数t表示有t组测试实例,每组测试实例的第一个数n(n<=100)表示东东有n个女朋友。接下来的n行,每行有两个数s,e表示东东的女朋友的空闲时间的起始时间和终止时间(0 < s<=e<=24)。

Output

输出东东所需要的最少的天数来陪他的女朋友们

Sample Input

1
3
1 8
2 3
4 7

Sample Output

2


属于看错题系列=-=,拿到题第一反应就是,贪心,最基础的贪心。后来按照贪心的方法排序计算,结果一直WA,再仔细看题,这道题说的是,最少用多少天来陪完所有的女朋友,而不是一天内最多能陪多少女朋友===。

思路:类似于某次河南省省赛的一道房间安排的题,开一个24的数组,然后把所有出现过的区间内的数一次次累加,最后求出数组的最大值就是答案;真水!

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<cstring>
#include<string>
#include<map>
#include<queue>
#define N 220
#define INF 100000000
using namespace std;
int main()
{
    int t,n,mx,i,a,b,j;
    scanf("%d",&t);
    int ans[25];
    while(t--)
    {
        scanf("%d",&n);
        memset(ans,0,sizeof(ans));
        for(i=0;i<n;i++)
        {
            scanf("%d%d",&a,&b);
            for(j=a;j<=b;j++)
                ans[j]++;
        }
        mx=-9999;
        for(i=0;i<=24;i++)
            mx=max(mx,ans[i]);
        printf("%d
",mx);
    }
    return 0;
}


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。