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;
    }
  • 相关阅读:
    ACM2023
    Archlinux系统运维
    Apache2配置腾讯云SSL证书
    奇异值分解SVD
    剑指offer-不用加减乘除做加法
    负载均衡与缓存
    leetcode简单题6
    python 函数
    Mac-常用命令与快捷键
    GOM通区插件-支持GOM绝对路径-读取配置项-分割字符等功能。不定期更新
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10990596.html
Copyright © 2011-2022 走看看