备战蓝桥杯Day30 - 贪心-活动选择问题

问题描述

假设有n个活动,这些活动要占用同一片场地,而场地在某时刻只能供一个活动使用。
每个活动都有一个开始时间 si 和结束时间 fi (题目中时间以整数表示) ,表示活动在[si, f)区间占用场地。
问:安排哪些活动能够使该场地举办的活动的个数最多?

解决思路

贪心结论: 最先结束的活动一定是最优解的一部分
证明: 假设a是所有活动中最先结束的活动,b是最优解中最先结束的活动
如果a=b,结论成立
如果a不等于b,则b的结束时间一定晚于a的结束时间,则此时用a替换掉最优解中的b,a一定不与最优解中的其他活动时间重叠,因此替换后的解也是最优解。

  1. 首先,将所有活动按照结束时间 fi 进行排序。如果两个活动的结束时间相同,则按照开始时间 si 排序,以保证选择的确定性。

  2. 初始化一个空的活动列表,用于存储被选中的活动。

  3. 遍历排序后的活动列表,对于每个活动:

    • 如果当前活动不与已选中的任何活动重叠(即当前活动的开始时间 si 大于等于已选中活动的最晚结束时间),则选择该活动,并将其添加到已选中的活动列表中。
    • 否则,跳过该活动,继续检查下一个活动。
  4. 遍历结束后,已选中的活动列表就是能够使场地举办的活动个数最多的活动集合。

代码实现 

activities = [(1, 4), (3, 5), (0, 6), (5, 7), (3, 9), (5, 9), (6, 10), (8, 11), (8, 12), (2, 14), (12, 16)]
# 保证活动时间按照结束时间排好序
activities.sort(key=lambda x: x[1])def activity_selection(a):res = [a[0]]    # 排好序中的第一个一定是结束时间最早的for i in range(1, len(a)):# 活动不冲突的条件if a[i][0] >= res[-1][1]:res.append(a[i])return resprint(activity_selection(activities))

明天开始学习动态规划!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/764095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

d3dcompiler_47.dll缺失怎么修复?分享五种方法

在计算机编程和游戏开发中,D3DCompiler47.dll文件是一个非常重要的组件。它是由微软公司开发的DirectX SDK的一部分,主要用于编译DirectX的Shader代码。然而,对于许多初学者和开发者来说,他们可能对这个文件的属性和功能并不完全了…

电商数据分析25——电商平台优惠券营销效果的数据分析

目录 写在开头1. 优惠券营销的战略意义1.1 优惠券对消费者行为的影响1.1.1 改变购买决策1.1.2 增加购买意愿 1.2 优惠券在促销活动中的应用1.2.1 提高产品销量1.2.2 增强市场占有率 2. 数据分析在优惠券营销中的应用2.1 优惠券使用率和转化率分析2.2 消费者行为分析与细分2.3 优…

python的O2O生鲜食品订购flask-django-nodejs-php

用户只能通过一些类似软件进行查看生鲜超市,这样的管理方式仍然是比较机械传统的,本文通过对市面上常见的线上管理系统与现实生活中结合问题的讨论,从一个微信小程序的O2O生鲜食品订购角度进行需求分析,提供一些新的思路&#xff…

基于SpringBoot实现文件上传和下载(详细讲解And附完整代码)

目录 一、基于SpringBoot实现文件上传和下载基于理论 二、详细操作步骤 文件上传步骤: 文件下载步骤: 三、前后端交互原理解释 四、小结 博主介绍:✌专注于前后端领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚…

RHCSA(第一天)

1.部署Linux环境: 安装Vmware之后,在windows会产生两个虚拟网卡:vmnet1, vmnet8 部署Linux:需要有网卡,必须要知道root用户的密码,和你普通的用户的用户名和密码 远程连接配置&#xff1a…

BGP报文、邻居状态

BGP报文: 1、OPEN报文:用于建立BGP邻居的连接,协商BGP参数的报文。 2、update报文:用于BGP邻居之间交互路由信息及路由属性的报文。 3、notification报文:差错报文,用于报错信息的传递,并且中…

LeetCode-热题100:1.两数之和

题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意…

Linux:文件读取指令

Linux:文件读取指令 cat指令more指令less指令head指令 & tail指令grep指令 cat指令 cat指令用于查看目标文件的内容。 语法:cat [选项][文件] 比如直接使用cat读取一个文件: 可以看到,其直接在指令的下方,输出了t…

Python中错误和异常的区别你搞清楚了吗?

​ 在Python编程的世界里,错误(Error)和异常(Exception)都是用来处理运行时出现的问题的。但它们之间有着微妙的差别,今天我们就来弄清楚。 错误(Error)通常指的是那些更严重、不可…

OrangeDAO联合创始人Don Ho确认出席Hack.Summit() 2024区块链开发者大会

随着Web3技术的快速发展,区块链领域备受关注的盛会——Hack.Summit() 2024 区块链开发者大会即将于 2024 年 4 月 9 日至 10 日在香港数码港隆重启幕。本次大会不仅是 Hack.Summit() 系列在亚洲的首次亮相,更象征着全球区块链行业对亚洲,尤其…

HBM产品在本财年内将为美光带来数亿美元的收入

美光科技,作为美国的主要内存制造商,得益于人工智能(AI)市场需求的增长,在截至2月份的上一季度成功扭亏为盈,并给出了乐观的财务预测。在3月20日的财报电话会议上,美光科技CEO桑杰梅赫罗特拉表示…

python基础知识(三)基本编程题,应用题

基本编程题 1.从键盘输入一个整数和一个字符,以逗号隔开,在屏慕上显示输出一条信息。 示例如下: 输入: 10, 输出: 10 s input("请输入一个整数和一个字符,用逗号隔开:")l s.split(",&q…

3.2 CSS选择器

3.2.1 元素选择器 在CSS中最常见的选择器就是元素选择器&#xff0c;即采用HTML文档中的元素名称进行样式规定。元素选择器又称为类型选择器&#xff0c;可以用于匹配HTML文档中某一个元素类型的所有元素。 例如&#xff0c;匹配所有的段落元素<p>&#xff0c;并将其背景…

基于Java的厦门旅游电子商务预订系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒店管理模块2.4 美食管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学生表3.2.3 学生表3.2.4 学生表 四、系统展示五、核心代码5.1 新增景点类型5.2 查询推荐的…

GC日志打印

GC日志打印 java -jar -Xloggc:./gc-%t.log -XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintGCTimeStamps -XX:PrintGCCause -XX: UseGCLogFileRotation -XX:NumberOfGCLogFiles10 -XX:GCLogFileSize100M xxxxxx.jar%t 当前时间戳 -Xloggc:./gc-%t.log: 将日志记录到当前…

Linux之udp/tcp协议

之前我们已经初步了解了端口号&#xff01; 今天我们首先就要更加深入了解端口号&#xff01; 在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一个五元组来标识一个通信 其…

LeetCode每日一题——x 的平方根

x 的平方根OJ链接&#xff1a;69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 乍一看题目只需要算一个数的平方根&#xff0c;根据我们之前学的C语言我们能很快的想到使用sqrt&#xff0c;pow这类的<math.h>库函数&#xf…

ChatGPT助力:写出引人注目的学术论文

ChatGPT无限次数:点击直达 ChatGPT助力&#xff1a;撰写引人注目的学术论文 在学术领域&#xff0c;撰写引人注目的论文对于展示研究成果和获取认可至关重要。本文将介绍一些关键策略和技巧&#xff0c;帮助您撰写引人注目的学术论文。 选题精准 一篇引人注目的学术论文首先…

redis瘦身版

线程模型 纯内存操作/非阻塞io多路复用/单线程避免多线程频繁上下文切换 基于Reactor模式开发了网络事件处理器&#xff1a;文件事件处理器&#xff0c;单线程的 io多路监听多个socket&#xff0c;据socket事件类型选择对应的处理器&#xff0c;高性能网络通信模型&#xff0c…

企业必备的 Exchange 邮箱管理工具包:STELLAR TOOLKIT FOR EXCHANGE

天津鸿萌科贸发展有限公司是 Stellar 系列软件的授权代理商。 Stellar Toolkit for Exchange 工具包功能特性 将在线和离线EDB转换为PST Stellar Toolkit for Exchange 可以将邮箱从托管 Exchange 和脱机 EDB 导出为 PST 文件格式。该工具允许您根据需要连接单个或多个邮箱。…