活动选择

简介: 活动选择

题目描述

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
****************************************************/


相关文章
TienChin 活动管理-修改活动
TienChin 活动管理-修改活动
53 0
TienChin 活动管理-删除活动
TienChin 活动管理-删除活动
45 0
TienChin 活动管理-添加活动接口
TienChin 活动管理-添加活动接口
62 0
|
2月前
|
人工智能 自然语言处理 程序员
1024阿里云活动集锦
【10月更文挑战第9天】1024程序员节,阿里云推出多场景开发者活动,涵盖AI助手、云上实操挑战等,提供丰富的技术体验和学习机会。参与活动不仅能上手操作,还能领取礼品,感受AI时代的科技魅力。活动链接:[1024云上活动](https://developer.aliyun.com/topic/2024/1024cloudup?spm=a2c6h.13066369.question.3.7a606f95NIpx0S)
|
7月前
|
算法
活动选择问题
活动选择问题“【5月更文挑战第19天】”
174 1
|
弹性计算 双11 数据库
2023阿里云618有活动吗?
阿里云有618优惠活动吗?应该有吧,一个是618年中大促,一个是双十一年终大促,都是阿里云两个大型的优惠活动,大家耐心等待吧。
998 0
2023阿里云618有活动吗?
|
弹性计算 双11 数据库
阿里云2023年618有活动吗?一般会有哪些优惠内容和政策?
2023阿里云618有活动吗?从目前的情况来看,阿里旗下的淘宝、天猫等平台都已经推出了618活动内容,但是作为阿里旗下的云计算平台,阿里云2023年的618是否有活动内容目前还没公布,根据往年情况来看,阿里云618是有活动的,一般情况下,每年2-3月份会有开年采购季活动,6月份会有618年,而11月份会有双11等活动,都是阿里云的大型的优惠活动。
阿里云2023年618有活动吗?一般会有哪些优惠内容和政策?
专题学活动上
数字化对发展的深远影响、把握发展数字经济的目标。蔡进,
|
大数据
618活动推广效果如何跟踪?
2022年618电商狂欢节正在预热进行中。
618活动推广效果如何跟踪?
|
监控 数据挖掘 Serverless
618促销活动监控,你准备好了吗
618要来了,小伙伴是不是都在忙着加班,备战活动呢?特别是活动监控,每次活动领导都一次次催监控数据,搞得人紧张兮兮。 那么,到底活动监控该怎么做呢?就拿上个月我司刚做过的一个小活动举个例子吧。这个活动是一个很简单的全民派福利活动。从5月10日开始到5月31日,用户登录APP后可以领一张优惠券,优惠券在5月内都有效,满400减80呢。
200 0
618促销活动监控,你准备好了吗

热门文章

最新文章