zoukankan      html  css  js  c++  java
  • 1422:【例题1】活动安排

    1422:【例题1】活动安排

    题解

            所有活动都有一个起始时间和结束时间,映射到数轴上,将每个活动的起始时间点和结束时间点之间的连线看成一条线段,那么求解问题的任务,就是在对应的数轴上选择尽可能多的不相交的线段。

           由此,可以选择一种贪心策略:将每个活动的结束时间从小到大排序,每次选择最早的结束时间,这样接下来能选择更多的不相交的活动。

    注意题目给出的是时间点还是区间块

    注意读题,否则0

     

    这个显然是给出时间点

    这个是时间段

    他们不一样!!!

    提供一种思路:(当然也可以按最上面的那种策略来)

    代码

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>
    
    using namespace std;
    
    int n,ans=1,t;
    struct app
    {
        int s,e;
    }a[1005];
    
    bool cmp(app x,app y)
    {
        return x.e <y.e ;
    }
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
          scanf("%d%d",&a[i].s ,&a[i].e );
        
        sort(a+1,a+n+1,cmp);
        
        t=a[1].e ;
        
        for(int i=2;i<=n;i++)
        {
            if(a[i].s >=t)
            {
                ans++;
                t=a[i].e ;
            }
        }
        
        printf("%d",ans);
        
        return 0;
    }
  • 相关阅读:
    CPU使用率终极计算
    elementui
    spring security oauth2
    maven bom
    vue jsx
    [spring cloud] feign声明
    加分项
    JAVA日报
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10990596.html
Copyright © 2011-2022 走看看