会场安排  最少用几个会场 贪心

来源:互联网 发布:python post本地文件 编辑:程序博客网 时间:2024/05/03 05:54
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? 

Input
第一行一个正整数n (n <= 10000)代表活动的个数。
第二行到第(n + 1)行包含n个开始时间和结束时间。
开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000
Output
一行包含一个整数表示最少教室的个数。
Sample Input
31 23 42 9
Sample Output
2




#include<stdio.h>#include<algorithm>using namespace std;    int main(){    int n;    int i,j;    int sum;    long long int a[10000];    long long int b[10000];    while(scanf("%d",&n)!=EOF)    {        sum=0;        for(i=0;i<n;i++)            scanf("%lld %lld",&a[i],&b[i]);        sort(a,a+n);//开始时间单独排序        sort(b,b+n);//结束时间单独排序        j=0;        for(i=0;i<n;i++)        {           if(a[i]<b[j])//开始时间在结束时间前就加一个会场                sum++;           else                j++;//否则不用安排单独的会场直接放在此活动结束的会场然后遍历下一个结束的早的会场        }        printf("%d\n",sum);    }    return 0;}

原创粉丝点击