zoukankan      html  css  js  c++  java
  • SSLZYC 活动安排

    题目大意:
    我们要在足够多的会场里举行各种活动,一个会场在同一时刻只能安排一个活动,希望使用尽可能少的会场总数。假设一个活动结束后,立即可以在这个会场中进行下一个活动。求一段时间中需要的最少会场数。


    思路:
    纯暴力的题目!
    我们可以以开始时间来快排,再从1到n枚举每个活动的时间,求出最少所需的会场数。
    时间复杂度:O(n^2)


    代码:

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int a[1001],b[1001],c[1001],sum,n,num;
    
    void sorts(int l,int r)
    {
        int i,j,z;
        i=l;
        j=r;
        z=a[(i+j)/2];
        do
        {
            while (a[i]<z) i++;
            while (a[j]>z) j--;
            if (i<=j)
            {
                swap(a[i],a[j]);
                swap(b[i],b[j]);
                i++;
                j--;
            }
        }
        while (i<=j);
        if (i<r) sorts(i,r);
        if (j>l) sorts(l,j);
    }
    
    int main()
    {
        freopen("meet.in","r",stdin);
        freopen("meet.out","w",stdout);
        scanf("%d",&n);
        for (int i=1;i<=n;i++)
         scanf("%d%d",&a[i],&b[i]);
        sorts(1,n);  //手打快排 
        sum=1;
        c[1]=b[1];  //初始化 
        for (int i=2;i<=n;i++)  //枚举 
        {
            num=0;
            for (int j=1;j<=sum;j++)
             if (c[j]<=a[i]&&c[j]>c[num]) num=j;
            if (num==0)  //使用已有会场 
            {
                sum++;
                c[sum]=b[i];
            }
            else  //新开一个会场 
            {
                c[num]=b[i];
            }
        }
        printf("%d\n",sum);
        return 0;
    }
  • 相关阅读:
    设计模式——模板方法模式
    设计模式——适配器模式
    设计模式——策略模式
    设计模式——工厂模式
    设计模式——代理模式
    设计模式——单例模式
    设计模式——总纲
    Hadoop的safeMode
    MapReduce中Combiner规约的作用以及不能作为MR标配的原因
    hdfs shell
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313115.html
Copyright © 2011-2022 走看看