经典贪心问题之线段覆盖

各种类型的线段覆盖问题

本文为转载文章


问题1

问题描述:

1L的一维区间上,有n条线段,线段两端点分别为li,ri。求覆盖全部的最小线段条数。

问题分析:

贪心。贪心策略:按lr大的排序方式排序,得到第一条从 l1=1 出发且r1最大的线段,则第二条线段需要有l2r1​,且r2​尽可能大。同理第三条线段的l3r2r3​尽可能大。以此类推,很容易感觉到,该贪心策略已是最优策略。

问题2

问题描述:

1L的一维区间上,有n条线段,线段两端点分别为li,ri。求不重叠的最大覆盖。

问题分析:

动态规划。将线段先按rl小的顺序先排序。
f[i]为从区间1i的最大覆盖。vector存储以r为下标的ldp1L,若有以ir的线段,则考虑是否放入该线段。
很显然的一点:dp数组一定是递增(废话)
不放入该线段则继承:dp[i]=dp[i1]
放入该线段则:dp[i]=max(dp[vec[i][j]1]+rl+1)0<=j<vec[i].size()

问题3

问题描述:

1L的一维区间上,有n条线段,线段两端点分别为li,ri,线段的权值为vi。求不重叠的最大权值和。

问题分析:

动态规划。和问题2的方法基本一样,只不过问题2的线段的权值是线段的长度:rl+1。而现在的权值是给定的vi

————————————————
本文为CSDN博主「是哆啦D梦」的原创文章
原文链接:https://blog.csdn.net/weixin_43602607/article/details/115418285

posted @   windf_风岚  阅读(290)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
1
点击右上角即可分享
微信分享提示