[算法练习]贪心算法之活动安排

贪心算法-(活动安排,最优装载,背包,会场安排,删数问题) 目录 1.活动安排 任务描述 输入格式 输出格式 输入样例 输出样例 代码实现 2.最优装载 任务描述 输入格式 输出格式 输入样例 输出样例 代码实现 3.背包问题 任务描述 输入格式 输出格式 输入样例 输出样例 代码实现 4.会场安排 任务描述 输入格式 输出格式 输入样例 输出样例 代码实现 5.删数问题 任务描述 输入格式 输出格式 输入样例 输出样例 代码实现 1.活动安排 任务描述 学校的小礼堂每天都会有许多活 阅读详情
template<class Type>
/**
 * [GreedySelector 活动安排贪心算法]
 * @param n      [活动总数量, 此处默认n>=2]
 * @param start  [开始时间数组]
 * @param finish [结束时间数组]
 * @param mark   [是否被选中标记数组]
 */
void GreedySelector(int n, Type start[], Type finish[], bool mark[]){
	int j = 1; // 最后一个被选中的下标;
	mark[j] = true;
	for(int i=2; i<=n; i++){
		if(start[i]>=finish[j]){
			mark[i] = true;
			j = i;
		}else{
			mark[i] = false;
		}
	}
}
/**[活动安排问题描述]
 * 假设n个活动的集合为 			E = {i| i=1,2,..., n}
 * 开始时间集合 			start = {s1, s2, ..., sn}
 * 结束时间集合 		   finish = {f1, f2, ..., fn}      其中 finish 是非降序列 即 i<j => fi <= fj	
 * 现在要求一个活动安排集合mark, 对于mark中的任意活动i,j,要求 fi<=sj 或者 fj<=si
 * =================================================================================================================================
 * 结论: 在活动安排问题中, 贪心选择算法一定能得到全局最优解
 * =================================================================================================================================
 * 证明步骤:
 * Target 1. 证明总是存在以贪心选择开始的最优活动安排方案;
 * Target 2. 证明对于做出贪心选择后, 原问题等价于"对剩余与贪心选择活动相容的活动进行安排的问题"
 *    		即证明若E是总的活动集合, 那么A是原活动集合E的最优安排,那么A' = A-{1} 是活动 E' = {i∈E| start[i] >= finish[1]} 的最优解
 *=================================================================================================================================
 * 证明如下:
 * 1.[Target 1]
 *   假设 P是活动E的一个最优解, 而P中的第一个活动是k. 
 *   若k为1, 那么此P即为以贪心选择开始的活动安排,即证;
 *   否则, 活动安排P的第一个活动k>1, 现在考虑构造一个活动安排Q=P-{k}+{1},
 *   由于finish[1]<=finish[k](finish列表非降), 又由于P是一个合法的活动安排,因此Q也是一个合法的活动安排,且活动安排数量一致;
 *   因此P是最优解=>Q为最优解 => 活动安排Q是以贪心选择开始的活动安排.
 *
 * 2.[Target 2]
 *   假设P是活动E的一个以贪心选择开始的最优解, 那么现在考虑 E中兼容活动{1}的所有活动的集合活动 E' = {i∈E| start[i] >= finish[1]}
 *   我们有 P' = P-{1} 是 E'的一个活动安排, 我们要证明P'是最优的活动安排:
 *   		假设 Q 是活动E'的一个最优解, 假设它具有比P'更多的活动, 那么将活动{1}加入Q, 那么将得到活动集合E的一个最优解Q+{1}
 *   		则|Q+{1}| = |Q|+1 > |P'|+1 = |P-{1}| + 1 = |P| 因此 对于活动集合E来说 Q+{1} 是比 P 更优的解,矛盾.
 *
 *   综合上述两点可以知道, 对于活动安排问题,贪心算法得到的是全局最优解.
 *=================================================================================================================================
 */

活动安排问题(贪心算法及证明) 会场安排问题(贪心算法):贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。2.相关代码:#include&lt;stdio.h&gt; #define M 11 ... 阅读详情

相关推荐

活动安排问题(贪心算法)

活动安排问题(贪心算法)活动安排问题(贪心算法)

活动安排算法

问题描述 设有n个活动,每个活动要求使用统一资源,每个活动i都有起始时间s和一个结束时间f,活动1执行完成后活动2也可以完全执行,则活动1与活动2相容。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。活动结束时间以升序排列。 ###算法分析 1.活动安排问题可以用贪心算法求解,从贪心算法的思想出发,总是作出当前最好的选择,并不需要从整体最优考虑,完成的是局部最优选择,整体最优解可以通过一系列局部最优的选择当然活动安排问题用贪心算法求解则是最优选择。 2.基本思路 一、建立数学模型来描述问题。

weixin_46274553的博客 2201

贪心算法活动安排问题,

活动安排问题是利用贪心算法有效求解的很好例子。该问题要求高校的安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法,使尽可能多的活动可以兼容的使用某一公共资源

活动安排(贪心算法)

贪心算法总是做出在当前看来是最好的选择。但贪心算法并不从整体最优加以考虑,它所做出的选择只是在某种意义上的局部最优选择。但其最终结果能达到预期目的,或者是最优解的近似解。 活动安排是贪心算法的一个很好的例子:设有n个活动的集合E={1,2,3.....,n},其中每个活动都要求使用同一资源(一个时间段只能安排一个活动)。每个活动都有一个起始时间Si和一个结束时间Fi。如果选择了活动i,则它在半开

weiyang_8765的博客 5729

贪心算法实现活动安排问题

贪心算大实现活动安排问题,算法实现使用图形界面动态显示,程序中用到的排序算法为快速排序

STM32F407 UART4串口DMA收发实战:告别频繁中断,用空闲中断+DMA搞定不定长数据

本文详细介绍了STM32F407 UART4串口结合DMA和空闲中断实现高效不定长数据收发的实战方案。通过DMA硬件级数据搬运和空闲中断智能帧检测,显著降低CPU占用率,提升通信效率,适用于工业传感器数据采集和智能设备通信场景。

weixin_42631411的博客 154

算法设计与分析——活动安排问题(Java)

算法设计与分析——活动安排问题(Java) 算法设计与分析 贪心法求解活动安排问题的算法

qq_53709454的博客 3809

iTunes登录协议全解析:从抓包到加密参数生成(含HTTPDebugger避坑指南)

本文深度解析iTunes登录协议,提供从环境搭建、绕过反调试机制到捕获网络流量的完整实战指南。重点剖析了如何利用HTTPDebugger等工具进行抓包,并详细解读了核心加密参数X-Apple-ActionSignature的生成逻辑,为网络安全研究员和协议分析工程师提供了一份详尽的逆向分析与协议复现教程。

weixin_28314575的博客 869

【算法设计与分析】活动安排问题(动态规划和贪心算法)

活动选择问题描述 假设我们存在这样一个活动集合S={a1,a2,a3,a4,...,an},其中每一个活动ai都有一个开始时间si和结束时间fi保证(0≤si<fi),fi保证(0≤si<fi),活动aiai进行时,那么它占用的时间为[si,fi)[si,fi).现在这些活动占用一个共同的资源,就是这些活动会在某一时间段里面进行安排,如果两个活动aiai和ajaj的占用时间[si,f...

one or only的博客 7326

拆解特斯拉Optimus的关节技术:谐波减速器在仿人机器人中的5个精妙设计

本文深度解析特斯拉Optimus仿人机器人关节中的谐波减速器技术,揭示其五大工程突破:微型化材料革命、两万分之一圈精度实现、碳纤维柔轮轻量化、智能运维系统及国产替代方案。重点探讨谐波减速器如何通过创新设计和先进材料实现精准传动,为仿人机器人提供高效可靠的关节动力解决方案。

omega的博客 1075

使用 Simulink + Simscape Electrical 实现一个三相电压型PWM整流器的仿真模型

三相电压型PWM整流器(Voltage Source PWM Rectifier, VSR)是一种先进的电力电子装置,它不仅可以将交流电转换为直流电,还能实现单位功率因数操作,即输入电流与输入电压同相位。这不仅提高了电网质量,减少了谐波污染,而且提高了整个系统的效率。本文将详细介绍如何使用实现一个三相电压型PWM整流器的仿真模型,并探讨其在单位功率因数下的控制策略和仿真结果。本文详细介绍了如何使用搭建一个三相电压型PWM整流器的仿真模型,并对其在单位功率因数下的控制策略进行了探讨。

amy_mhd的博客 128

贪心算法之活动安排(自我练习)

#include<iostream> using namespace std; #define MAXSIZE 5 int s[5] = { 1,3,6,8,9 }; int f[5] = { 2,6,9,11,12 }; void timeSelector(int s[], int f[], int n) { int j = 0, index = 1; int temp[MAXSIZE] = { 1 }; for (int i = 1; i < n; i++) { if (s.

biubiuBoom_6121的博客 758

打造AI智能体员工,我用扣子复刻了华与华、奥美和金枪大叔

这事说穿了,就是你用多个AI智能体,分别扮演专业角色,构成一支能力互补、各司其职的“数字团队”。每个智能体,都有明确的角色设定、任务边界和接口形式。它不再是一个泛泛的ChatGPT,而是你手下的“品牌顾问”、“策略专家”、“文案大神”、“短视频导演”、“运营总监”。简单来说,你不再是雇一个人,而是养一群机器人打工——24小时不摸鱼,不请假,不离职。如果你是个人创业者、内容创作者、培训机构、中小企业主,其实都可以尝试构建属于你自己的“AI虚拟员工矩阵”。

互联网架构师笔记 1498

一文绝对弄懂贪心算法解决活动选择问题

接下来使用C++实现的。

m0_74107848的博客 892

Epicor ERP 界面新增客制化字段操作方法

我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。

cqxianggang的专栏 412

结构函数分析与 JESD51-14 标准详解

结构函数(Structure Function)是将器件瞬态热响应曲线(冷却曲线)通过数学变换,转换为热阻(Rth)与热容(Cth)沿热流路径一维分布的图形化分析方法。它能“看到”热量从结(Junction)到壳(Case)或环境的过程中,经过每一层结构时的热学特性。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 57

[贪心算法]「一本通 1.1 例 1」活动安排 「一本通 1.1 练习 3」线段

#10000. 「一本通 1.1 例 1」活动安排 简洁题意:给定n个区间,求最多互不覆盖区间数 题解:贪心,使结束时间(右端点)升序,能加就加,尽可能在ans相同情况下剩下更大空间。 #include<cstdio> #include<algorithm> using namespace std; struct node{int s,e;}a[1010]; bool cmp(node x,node y){ return x.e<y.e; } int main() { int

wly_sh的博客 242

Python 爬虫高级实战:HTTPS 证书忽略与代理抓包配置

本文深入解析了HTTPS加密与SSL证书校验机制在爬虫开发中的核心问题及解决方案。文章首先剖析了HTTPS协议架构和证书校验流程,指出爬虫开发中常见的证书异常场景及其负面影响。随后详细介绍了Python主流请求库(requests、httpx、aiohttp)的证书忽略配置方法,包括同步/异步模式下的实现方案。针对代理环境,文章系统比较了HTTP、HTTPS、SOCKS5等代理类型的特性差异,并提供了完整的代理配置示例。特别对中间人抓包场景,阐述了Mitmproxy的工作原理和配置要点。最后提出了工程级爬虫

2503_91057718的博客 85

什么是贪心算法?如何学贪心算法?咋使用贪心算法?一篇文章教会你!

【代码】贪心算法

wgiwgi_______的博客 822

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ACM--贪心算法--活动安排问题二

51nod题目地址:点击打开链接 有若干个活动,第i个开始时间和结束时间是[Si,fi),活动之间不能交叠,要把活动都安排完,至少需要几个教室? 分析:能否按照之一问题的解法,每个教室安排尽可能多的活动,即按结束时间排序,再贪心选择不冲突的活动,安排一个教室之后,剩余的活动再分配一个教室,继续贪心选择…… 反例: A:[1,2)  B:[1,4) C:[5

戎码人生 3581

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ACM贪心算法总结

通过这一段时间对贪心算法的练习,即通过对落单的数、主元素等的编程,我加深了对贪心算法的理解,更加明白如何通过贪心找到其局部最优解。 注意:贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解。 基本思想:通常以把总体分开的方式进行,以依次调整的方式作出相继的贪心选择,每一次的贪心选择将所求问题简化为规模更小的子问题。 做题情况: 学习贪心算法,所给的15道题中只AC了10道,并...

qq_43627086的博客 525

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

实验7 贪心算法实验一

实验7 贪心算法实验一 OJ练习 1. Bone Collector: http://acm.hdu.edu.cn/showproblem.php?pid=2602【01背包】 2. Big Event in HDU: http://acm.hdu.edu.cn/showproblem.php?pid=1171【01背包】 3*. 饭卡: http://acm.hdu.edu.cn/sho...

Roni 1575

【贪心】活动安排问题

活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。         设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该...

qq_38936579的博客 447

C&C++实现算法习题第三部分—贪心算法(一)

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 一. 活动安排问题 问题描述 设有n个活动的集合E= {1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<...

bruce_zhao1407的博客 631

算法习题——会场安排问题

问题描述: 假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排 对于给定的k个待安排的活动,计算使用最少会场的时间表。 输入数据的第一行有1 个正整数k(k≤10000),表示有k个待安排的活动。接下来的k行中,每行有2个正整数,分别表示k个待安排的活动开始时间和结束时间。时间以0 点开始的分钟计。 解题思路: 1) 对每个活动按照结束时间的先后进行排序 2) 开始按照顺序遍历,如果另一个活动的开始时间早于当前活动的结束时间,则要新分配一个会场;如果另一个活动的时间

少女与飞剑的博客 1223
上一篇: 贝塞尔曲线
下一篇: [Lua]实现switch的一种方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值