• Swan学院社团招新


    Swan学院社团招新,招新宣讲会分散在不同时间段,大一新生小花花想知道自己最多能完整的参加多少个招新宣讲会(参加一个招新宣讲会的时候不能中断或离开)。
    【问题说明】这个问题是对几个相互竞争的招新宣讲会活动进行调度,它们都要求以独占的方式使用某一公共资源(小花花)。调度的目标是找出一个最大的相互兼容的活动集合。
    活动选择问题就是要选择出一个由互相兼容的问题组成的最大子集合。
    【温馨提示】应先将所有的活动按照结束时间升序排列,然后再选择可能的时间组合,并求出最大的组合数,使用qsort()排序函数是一个不错的选择。qsort 的函数原型是:
    void qsort(voidbase,size_t num,size_t width,int(__cdeclcompare)(const void*,const void*));
    功 能: 使用快速排序例程进行排序 头文件:stdlib.h
    参数: 1 待排序数组首地址;2 数组中待排序元素数量;3 各元素的占用空间大小;4 指向函数的指针,用于确定排序的顺序

    输入格式:

    第一行为n,表示有n个招新宣讲会,接下来n行每行两个整数表示开始时间和结束时间,由从招新会第一天0点开始的小时数表示(24小时制)。 n <= 1000 。

    输出格式:

    最多参加的招聘会个数。

    输入样例:

    在这里给出一组输入。例如:

    1. 3
    2. 9 10
    3. 10 20
    4. 8 15

    输出样例:

    在这里给出相应的输出。例如:

    2

    // 我们只需要求出不重叠的区间即可,即下一个的开区间大于等于上一个的闭区间 。注:这里的区间重叠不包含重叠情况

    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;

  • 相关阅读:
    【Java第十七期】:##模拟实现一个ArrayList
    Vulnhub实战-prime1
    矩阵的行列式的计算及其源码
    学术分享 | 清华大学 康重庆:电力系统碳计量技术与应用(Matlab代码实现)
    (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
    Linux安装Nginx
    Promise的基本用法,基于Promise处理ajax请求
    C++:多态
    Haproxy
    JFROG CLI改为API Key方式上传
  • 原文地址:https://blog.csdn.net/m0_51863774/article/details/127867405