贪心算法

贪心算法章节入口:每一步选择当前看起来最优的方案,再用交换论证等工具证明它能导出全局最优解。

贪心的核心是:每一步都做出当前看起来最优的选择,并保证这个局部选择不会破坏全局最优。本章从基础模型出发,配合相邻交换、交换论证等典型证明手法展开。

章节内容

经典例题

下面两题都是「按端点排序 + 用堆维护最紧迫的候选」的区间贪心,区别在于题目要求的匹配方向不同。

题目 贪心模型 关键点
luogu-P2859 题解 区间调度:用最少的互不重叠容器装下所有区间 按左端点升序处理区间,用小根堆维护每个容器当前的结束时间。堆顶是全场最早空出来的容器,当前区间的左端点不小于它就直接复用,否则新开一个;答案等于同一时刻的最大重叠区间数。
luogu-P2887 题解 区间点覆盖:每个区间匹配一个落在区间内的点,点带容量 把点按坐标升序扫描,用堆维护左端点已经到达的区间,按右端点从小到大出堆。先满足右端点最小的区间,因为它最快过期;已经过期的区间直接丢弃。

两题的堆都承担同一件事:在任意时刻,从所有“还来得及”的候选中挑出“最快失效”的那个。