关闭

练习赛15.1.活动选择

679人阅读 评论(0) 收藏 举报
分类:

活动选择

Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 11 Accepted Submission(s) : 5

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。现在给出n个活动使用礼堂的起始时间begini和结束时间endi(begini<endi),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。

Input

输入有多组数据,每组数据的第一行一个整数n(n<=1000);接下来的n行,每行两个整数,第一个begini,第二个是endi(begini<endi<=32767)

Output

对于每组数据输出最多能安排的活动个数。

Sample Input

11
3 5
1 4
12 14
8 12
0 6
8 11
6 10
5 7
3 8
5 9
2 13

Sample Output

4
思路分析:简单的排序问题;
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct  tmp
{
    int a,b;
}s[1300];
int f(tmp n,tmp m)
{
    if(n.b!=m.b) return n.b<m.b;//按B排序
    else if(n.a!=m.a) return n.a<m.a;
}
int main()
{
    int t,i,j,l;
    while(scanf("%d",&t)!=EOF)
    {
        for(i=0;i<t;i++)
        {
             scanf("%d%d",&s[i].a,&s[i].b);
        }
        sort(s,s+t,f);
        int a=s[0].b,cnt=1;
        for(i=0;i<t;i++)
        {
            if(a<=s[i].a)
            {
                cnt++;
              a=s[i].b;
            }


        }
        printf("%d\n",cnt);
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21426次
    • 积分:612
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条