zoukankan      html  css  js  c++  java
  • nyoj14-会场安排问题

    会场安排问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
    描述
    学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。
    输入
    第一行是一个整型数m(m<100)表示共有m组测试数据。
    每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。
    随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)
    输出
    对于每一组输入,输出最多能够安排的活动数量。
    每组的输出占一行
    样例输入
    2
    2
    1 10
    10 11
    3
    1 10
    10 11
    11 20
    
    样例输出
    1
    2
     
    #include<iostream>  
    #include<cstdio>  
    #include<algorithm>  
    using namespace std;  
    struct point {  
        int s,e;  
    }a[10005];  
    bool cmp(point x,point y){  
            return x.e<y.e;  
    }  
    int main(){  
        int m;  
        scanf("%d",&m);  
        while(m--){  
            int n;  
            scanf("%d",&n);  
            for(int i=0;i<n;i++)  
                scanf("%d%d",&a[i].s,&a[i].e);  
            sort(a,a+n,cmp);  
            int sum=1,k=a[0].e;  
            for(int i=1;i<n;i++){  
                    if(a[i].s>k){  
                        sum++;  
                        k=a[i].e;  
                    }  
            }  
            printf("%d
    ",sum);  
        }  
      
    }         

     
    #include<stdio.h>
    #include <vector>
    #include<algorithm>
    #include<math.h>
    using namespace std;
    
    struct activ 
    {
    	int begin;
    	int end;
    };
    bool cmp( activ a,activ b)
    {
    	return a.end<b.end;
    }
    int main()
    {
    	//freopen("1.txt","r",stdin);
    	int n;
    	scanf("%d",&n);
    	while (n--)
    	{
    		int m;
    		scanf("%d",&m);
    		vector<activ> vec;
    		for(int i=0;i<m;i++)
    		{
    			activ a;
    			scanf("%d%d",&a.begin,&a.end);
    			vec.push_back(a);
    		}
    		
    		sort(vec.begin(),vec.end(),cmp);	
    		int count=vec.size();
    		int k=0;
    		for (int i=1;i<vec.size();i++)
    		{
    			if(vec[i].begin <= vec[k].end) 
    				count--;
    			else k=i;
    		}
    		printf("%d
    ",count);
    	}
    	
    	return 0;
    }        

  • 相关阅读:
    Android 编程下 Eclipse 恢复被删除的文件
    Android 编程下背景图片适配工具类
    Android 编程下 Managing Your App's Memory
    Android 编程下代码之(QQ消息列表滑动删除)
    Android 编程下 Canvas and Drawables
    Android 编程下 AlarmManager
    Android 编程下去除 ListView 上下边界蓝色或黄色阴影
    Java 编程下字符串的 16 位、32位 MD5 加密
    C#枚举类型和int类型相互转换
    MVC和普通三层架构的区别
  • 原文地址:https://www.cnblogs.com/aerer/p/9931109.html
Copyright © 2011-2022 走看看