• 活动选择问题


    假定一个有n个活动(activity)的集合S={a1​,a2​,....,an​},这些活动使用同一个资源(例如同一个阶梯教室),而这个资源在某个时刻只能供一个活动使用。每个活动ai​都有一个开始时间si​和一个结束时间fi​,其中0<=si​=fj​或sj​>=fi​,则ai​和aj​是兼容的。在活动选择问题中,我们希望选出一个最大兼容活动集。

    输入格式:

    第一行一个整数n(n≤1000);

    接下来的n行,每行两个整数,第一个si​,第二个是fi​(0<=si​

    输出格式:

    输出最多能安排的活动个数。

    输入样例:

    1. 11
    2. 3 5
    3. 1 4
    4. 12 14
    5. 8 12
    6. 0 6
    7. 8 11
    8. 6 10
    9. 5 7
    10. 3 8
    11. 5 9
    12. 2 13

    输出样例:

    4
    

    样例解释:

    安排的4个活动为1 4, 5 7, 8 11和12 14。

    //对于这类的活动时间安排,也可以称为区间问题,无非就是结构体加排序,再最后作判断,判断下一开始时间和上一结束时间的关系,有的可以相等,有的不可以相等 

    1. #include<bits/stdc++.h>
    2. using namespace std;
    3. struct xx{
    4. int a,b;
    5. }s[40005];
    6. int cmp(xx x,xx y){
    7.     if(x.b==y.b)return x.a<y.a;
    8.     return x.b<y.b;
    9. }
    10. int main(){
    11.     int n,c=0,j=0;
    12.    cin>>n;
    13.     for(int i=0;i<n;i++){
    14.        cin>>s[i].a>>s[i].b;
    15.     }
    16.     sort(s,s+n,cmp);
    17.     c+=1;
    18.     for(int i=1;i<n;i++){
    19.         if(s[i].a>=s[j].b){
    20.             c++;
    21.             j=i;
    22.         }
    23.     }
    24.    cout<<c;
    25.     return 0;

  • 相关阅读:
    Chromium源码由浅入深(三)
    前端体验优化(4)——数据
    Qt开发经验小技巧236-240
    Flutter:getX的学习
    12.3做题
    关于Conversational QA 的一些调研
    面了个腾讯30k+出来的,他让我见识到什么是基础的天花板
    P18 JMenuBar菜单栏
    接口测试常用工具及测试方法(零基础篇)
    JavaWeb__XML、http
  • 原文地址:https://blog.csdn.net/m0_51863774/article/details/127877679