WinterEx.监测点

来源:互联网 发布:移动光纤网络机房在哪 编辑:程序博客网 时间:2024/05/21 22:10

问题 W: 【贪心】监测点

时间限制: 1 Sec  内存限制: 64 MB

题目描述

“多 么希望有一天突然惊醒,发现自己是在小学的一节课上睡着了,现在经历的一切都是一场梦,桌上满是你的口水。你告诉同桌,说做了一个好长好长的梦。同桌骂你 白痴,叫你好好听课。你看着窗外的球场,一切都那么熟悉,一切还充满希望……”张琪曼通过时空监测点听到40年前的小墨老师对李旭琳这样说。

话说张琪曼等人将历史时间线划分了n个区域,我们可以将之看成是数轴上的n个闭区间[ai,bi]。现要设置尽量少的监测点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个),请问需要多少个监测点?

输入

第一行为一个整数X,表示有X组数据,每组数据第一行为一个整数n(N≤100),表示有n个闭区间,随后n行每行为两个整数,表示区间左端a和右端b(0≤a≤b≤100)。

输出

一个整数,即监测点个数。

样例输入

1

3

1 5

2 8

6 9

样例输出

2

【思路】

    先找出独立的互不相连的区间的个数。

【代码】

 

#include <bits/stdc++.h>

 

using namespace std;

struct data

{

    int a,b;

}d[110];

 

int X,n,i,ans;

bool cmp(data A,data B)

{

    if (A.b==B.b) return A.a<B.a;

    return A.b<B.b;

}

int main()

{

    scanf("%d",&X);

    while (X--)

    {

        scanf("%d",&n);

        for (i=0;i<n;++i)

            scanf("%d%d",&d[i].a,&d[i].b);

        sort(d,d+n,cmp);

        ans=1;

        int j=0;

        for (i=1;i<n;++i)

        {

            if (d[i].a>d[j].b)

            {

                j=i;

                ans++;

            }

        }

        printf("%d\n",ans);

    }

    return 0;

}

 

0 0