活动选择

简介: 活动选择

题目描述

Problem Description

学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断。现在各个社团都提交了他们使用该中心的活动计划(即活动的开始时刻和截止时刻)。请设计一个算法来找到一个最佳的分配序列,以能够在大学生艺术中心安排不冲突的尽可能多的社团活动。

比如有5个活动,开始与截止时刻分别为:

最佳安排序列为:1,4,5。

Input

第一行输入活动数目n(0<n<100);

以后输入n行,分别输入序号为1到n的活动使用中心的开始时刻a与截止时刻b(a,b为整数且0<=a,b<24,a,b输入以空格分隔)。

Output

输出最佳安排序列所包含的各个活动(按照活动被安排的次序,两个活动之间用逗号分隔)。

Sample Input

6

8 10

9 16

11 16

14 15

10 14

7 11

Sample Output

1,5,4

题目思路

刚看到这道题,还是有点懵逼的。

总结一下题目的大致意思:给你N个活动,每个活动有对应的开始和结束以及编号,让你找一个最合适的方法,来使进行的活动最多。

直接开一个结构体,里面包含每个活动的开始、结束、编号、时间区间,这里的时间区间主要是为了后面排序使用,对于结构体进行排序,依次遍历,输出结果。

题目代码

#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct node
{
    int start;//定义每一个的开始时间
    int finish;//定义每一个的结束时间
    int id;//为每一个活动赋予其相应的id
    int section;//定义每一个活动的区间范围,也就是执行活动的时间大小
} st[1222];
int cmp(node a, node b)
{
    if(a.finish == b.finish)
    {
        return a.section < b.section;//如果结束时间相同的话,则根据区间的大小进行排序。
    }
    else
    {
        return a.finish < b.finish;//根据结束时间进行升序排序
    }
}
int main()
{
    int n;
    cin>>n;
    for(int i = 1; i <= n; i++)
    {
        cin>>st[i].start>>st[i].finish;
        st[i].id = i;
        st[i].section = st[i].finish - st[i].start;
    }
    sort(st + 1,st + n + 1,cmp);//对当前的结构体按照结束的时间进行排序,如果结束的时间相等的话,则根据区间排序。
    printf("%d", st[1].id);//排序完之后,选取第一个肯定是最优的。
    int x = st[1].finish;
    for(int i = 2; i <= n; i++)
    {
        if(st[i].start >= x)
        {
            printf(",%d", st[i].id);
            x = st[i].finish;
        }
    }
    printf("\n");
    return 0;
}
/***************************************************
User name: jk170631黄良帅
Result: Accepted
Take time: 0ms
Take Memory: 200KB
Submit time: 2019-11-16 17:04:54
****************************************************/


相关文章
|
11月前
专题学活动上
数字化对发展的深远影响、把握发展数字经济的目标。蔡进,
|
12月前
|
弹性计算 双11 数据库
2023阿里云618有活动吗?
阿里云有618优惠活动吗?应该有吧,一个是618年中大促,一个是双十一年终大促,都是阿里云两个大型的优惠活动,大家耐心等待吧。
873 0
2023阿里云618有活动吗?
|
弹性计算 固态存储 小程序
2023年阿里云优惠活动汇总大全(最新活动都在这)
2023年阿里云优惠活动汇总大全(最新活动都在这),2023年阿里云优惠活动大全如阿里云新人特惠、学生服务器、免费云服务器、域名1元购、阿里云CLUB领券中心等,阿里云服务器包括云服务器ECS和轻量应用服务器配置优惠价格和购买攻略完整版,阿里云百科分享阿里云服务器优惠活动大全和代金券领取:
464 0
2023年阿里云优惠活动汇总大全(最新活动都在这)
|
弹性计算 固态存储 小程序
2023阿里云优惠活动有哪些?活动大全
2023阿里云优惠活动有哪些?阿里云优惠活动大全如阿里云新人特惠、学生服务器、免费云服务器、域名1元购、阿里云CLUB领券中心等,阿里云服务器包括云服务器ECS和轻量应用服务器配置优惠价格和购买攻略完整版,阿里云百科分享阿里云服务器优惠活动大全和代金券领取:
131 0
2023阿里云优惠活动有哪些?活动大全
|
弹性计算 应用服务中间件 双11
2022阿里云双十一服务器有活动吗?当然有!
2022阿里云双11优惠活动还未上线,双十一活动是阿里云历来的大型优惠活动,肯定是有的,云服务器作为阿里云明星级云产品在双十一活动上肯定有特价机型提供,去年双十一阿里云服务器65元一年起,今年云服务器价格有所上涨,但是双11活动上优惠力度应该不会小,大家敬请期待吧。
1137 1
2022阿里云双十一服务器有活动吗?当然有!
|
监控 数据挖掘 Serverless
618促销活动监控,你准备好了吗
618要来了,小伙伴是不是都在忙着加班,备战活动呢?特别是活动监控,每次活动领导都一次次催监控数据,搞得人紧张兮兮。 那么,到底活动监控该怎么做呢?就拿上个月我司刚做过的一个小活动举个例子吧。这个活动是一个很简单的全民派福利活动。从5月10日开始到5月31日,用户登录APP后可以领一张优惠券,优惠券在5月内都有效,满400减80呢。
149 0
618促销活动监控,你准备好了吗
|
移动开发 Java C语言
阿里-21天打卡活动总结
阿里-21天打卡活动总结
189 0
阿里-21天打卡活动总结
|
安全 数据安全/隐私保护 Windows
参加阿里云活动
无影云活动
114 1
|
云安全 存储 弹性计算
阿里云新人特惠活动7大亮点解析,看看活动为什么受关注
新人特惠活动是阿里云在2021年推出的一个全新优惠活动,也是继开年采购季之后受关注度最高的一个活动,其中关注度最高的云服务器专区包含了个人企业同享和企业专享两个专区,那么这个活动为什么关注度这么高呢?有哪些亮点呢?下面为大家解析一下阿里云新人特惠活动亮点,帮助用户了解活动亮点、规则以及选择技巧。
阿里云新人特惠活动7大亮点解析,看看活动为什么受关注
|
弹性计算 网络协议
阿里云618活动优惠 年中大促销
阿里云618活动优惠 年中大促销
421 0