会场安排问题

简介:

会场安排问题

问题描述:假设要在足够多的会场里安排一批活动,活动的开始时间和结束时间已知,并希望使用尽可能少的会场。设计一个有效的算法进行安排。

分析:这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,就对应要找的最小会场数。 图的最少着色问题,至今没有有效的算法,但这个问题和图的着色问题有不同,活动的时间区间之间的约束关系转化得到的图,属于区间图。我们可以用贪心策略来解决。

分析解答:

(1)n个活动开始和结束时间分别是s[i]和f[i],s[i]<f[i]。

(2)把n个活动时间看做直线上n个区间,把所有的s[i]和f[i]按大小排序,得到一个2n的有序数组。count用于统计会场数,遍历数组,统计区间的最大的重叠数目。遇到s[i],一种活动进栈(相当于要安排一个会场),count数加1,比较当前的会场使用数是否是最大。遇到f[i],一种活动出栈(相当于一个会场用完,可以作为其他活动用),count数减1,直到把所有的活动都安排好,结束遍历。

由于我们只要得到最少的会场数,遍历数组时,遇到一个s[i],就把当前的count数加1,遇到对应的f[i]时,就把当前的count数减1,同时记录每次循环时最大的count数,循环结束时,最大的count数就是我们需要的最少颜色数。这个算法的时间复杂度主要是由排序所影响,复杂度为O(N*logN)。

复制代码
//TimePoint[]数组就是所有的s[i]和f[i]按大小排序的结果
int countUsing = 0;
int maxCount = 0;
for(int i = 0; i < 2*N; ++i)
{
    if(TimePoint[i].type == "Begin")
    {
        ++ countUsing;
        if(countUsing > maxCount)
            maxCount = countUsing;
    }
    else
        -- countUsing;
}
复制代码
    本文转自阿凡卢博客园博客,原文链接: http://www.cnblogs.com/luxiaoxun/archive/2012/08/06/2624686.html ,如需转载请自行联系原作者




相关文章
|
5月前
Error:Elements in iteration expect to have ‘v-bind:key‘ directives
Error:Elements in iteration expect to have ‘v-bind:key‘ directives
|
算法
秒懂算法 | 活动安排问题贪心算法
通过例子分析求解活动安排问题的最好贪心策略、展示按照贪心策略求解该问题的过程。
349 0
秒懂算法 | 活动安排问题贪心算法
贪心算法——安排最大会议数量
贪心算法——安排最大会议数量
|
10天前
|
Kubernetes 安全 Devops
【云效流水线 Flow 测评】驾驭云海:五大场景下的云效Flow实战部署评测
云效是一款企业级持续集成和持续交付工具,提供免费、高可用的服务,集成阿里云多种服务,支持蓝绿、分批、金丝雀等发布策略。其亮点包括快速定位问题、节省维护成本、丰富的企业级特性及与团队协作的契合。基础版和高级版分别针对小型企业和大规模团队,提供不同功能和服务。此外,云效对比Jenkins在集成阿里云服务和易用性上有优势。通过实战演示了云效在ECS和K8s上的快速部署流程,以及代码质量检测和AI智能排查功能,展示了其在DevOps流程中的高效和便捷,适合不同规模的企业使用。本文撰写用时5小时,请各位看官帮忙多多支持,如有建议也请一并给出,您的建议能帮助我下一篇更加出色。
136083 13
|
14天前
|
存储 Prometheus 并行计算
10倍性能提升-SLS Prometheus 时序存储技术演进
本文将介绍近期SLS Prometheus存储引擎的技术更新,在兼容 PromQL 的基础上实现 10 倍以上的性能提升。同时技术升级带来的成本红利也将回馈给使用SLS 时序引擎的上万内外部客户。
158387 5
|
17天前
|
设计模式 前端开发 JavaScript
卓越工程布道:掌握条件判断的模式
本文是普适性的经验分享,并非按规范局限在 JavaScript 前端视角 做出的总结,除JavaScript外还深入结合了ActionScript 3.0、PHP、C / C++、Basic非纯粹OOP领域语言的经验。
241698 54
|
10天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
15天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
|
11天前
|
存储 弹性计算 Cloud Native
1 名工程师轻松管理 20 个工作流,创业企业用 Serverless 让数据处理流程提效
为应对挑战,语势科技采用云工作流CloudFlow和函数计算FC,实现数据处理流程的高效管理与弹性伸缩,提升整体研发效能。
64452 1
|
17天前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
187110 6