会场安排问题 (贪心算法)

该博客讨论如何使用贪心算法有效地安排一批活动,以最少的会场数完成任务。作者提供了输入输出示例,并分享了两种实现方法,包括优先队列和一种更快速的解决方案。
摘要由CSDN通过智能技术生成

Description

假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。) 对于给定的k个待安排的活动,计算使用最少会场的时间表。

Input

输入数据的第一行有1 个正整数k(k≤10000),表示有k个待安排的活动。接下来的k行中,每行有2个正整数,分别表示k个待安排的活动开始时间和结束时间。时间以0 点开始的分钟计。

Output

输出一个整数,表示最少会场数。

Sample Input

5
1 23
12 28
25 35
27 80
36 50

Sample Output

3

本来一开始是用的优先队列和快排,AC之后又发现了一个更快的方法(其实就是偷看的

优先队列AC代码

#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <algorithm>

using namespace std;
typedef long long ll;
const int Maxn=1e4+5;
typedef struct node
{
   
    int Ti_s,Ti_e;
    bool operator <(const struct node &a)const
    {
   
        if(Ti_e==a.Ti_
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值