• toj2867 Picking Problem


    题目链接:http://acm.tju.edu.cn/toj/showp.php?pid=2867

    题目大意:给定一系列活动的开始时间和结束时间,问最多能参加的活动数目

    思路:// 本题属于最大区间调度问题,即数轴上有n个区间,选出最多的区间,使这些区间互相不重叠。算法:按右端点坐标排序,然后依次按后者的开始时间是否大于前者的结束时间(注意更新前者的下标)选择所有能选的区间。

    代码:

    //   本题属于最大区间调度问题,即数轴上有n个区间,选出最多的区间,使这些区间互相不重叠。
    //    算法:按右端点坐标排序,然后依次按后者的开始时间是否大于前者的结束时间(注意更新前者的下标)选择所有能选的区间。
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct node{
    int s,e;
    }activity[10000];
    bool cmp(node a,node b)
    {
     return a.e<b.e;  //按结束时间排序
    }

    int main()
    {
      int n,d,st,i,ct,m;
      while(cin>>n&&n)
      {
        ct = 1;          //最多能参加的活动数  初始化为1!!
     for(i=0;i<n;i++)
     {
      cin>>st>>d;
      activity[i].s = st;
      activity[i].e = st+d;
     }
     sort(activity,activity+n,cmp);
     m=0;           
     for(i=1;i<n;i++)
     {
      if(activity[i].s>=activity[m].e)
      {
        ct++;   //如果后者的开始时间大于前者的结束时间,表明没有重合,能参加的活动数目加1
        m=i;    //后者和前者比,记着更新
      }
     }

     cout<< ct<<endl;
      }
      return 0;
    }


     

  • 相关阅读:
    OpenStack功能简介
    Openstack(七)keystone
    Openstack(六)RabbitMQ集群
    Openstack(五)Memcache- repcached集群
    Openstack(四)Mysql主从
    Openstack(三)Haproxy+Keepalived双机
    Openstack(二)基本环境准备--网络、时间、yum源等
    Openstack架构简介(一)
    运维监控系统之Open-Falcon
    python高级之Flask框架
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3339554.html
Copyright © 2020-2023  润新知