这是一道线段覆盖问题,一般可以通过贪心算法来解决。具体方法如下:
将所有线段按照右端点升序排列。
遍历每一条线段,如果当前线段的左端点大于前一条线段的右端点,则选择当前线段。
统计选择的线段数即为答案。
因为每一次都选择的是右端点最小的线段,因此保证了不存在重叠部分。
这是一道线段覆盖问题,一般可以通过贪心算法来解决。具体方法如下:
将所有线段按照右端点升序排列。
遍历每一条线段,如果当前线段的左端点大于前一条线段的右端点,则选择当前线段。
统计选择的线段数即为答案。
因为每一次都选择的是右端点最小的线段,因此保证了不存在重叠部分。
区间覆盖问题
类似问题:互动安排问题和选点问题 区间覆盖问题 数轴上有n个闭区间[ai, bi],选择尽量少的区间覆盖一条指定线段[s, t]。 用贪心法解决这个问题的思路如下: (1)找到所有的、起点小于s的区间 (2)把这些区间按照终点,从小到大排序 (3)选择终点最大的那个区间,设这个最大的终点是bi (4)现在问题变成了,“选择尽量少的区间覆盖一条指定线段[bi, t]” (5)用相
codevs P3027 线段覆盖 2
开学了骚话不止 班主任是美女。 我最近几天刷OJ很是颓废,在校是真的懒,拿了好多道题思考,没AC一道。 但是一回家就茅塞顿开,神奇。 记录一下防止以后忘记了 线段覆盖 2 问题引入 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大。 n...
线段覆盖问题
题目描述 Description数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大。输入描述 Input Description第一行一个整数n,表示有多少条线段。接下来n行每行三个整数, ai bi ci,分别代表第i条线段的左端点ai,右端点bi(保证左端点<右...
线段覆盖系列
线段覆盖1 给定x轴上的N(0 输入描述 Input Description 输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线段的二个端点的坐标。 输出描述 Output Description 输出第一行是一个整数表示最多剩下的线段数。 样例输入 Sample Input 3 6 3 1 3 2 5 样例输出 Sample O
不相交线段
数轴上有 n 条线段,第 i (1≤i≤n) 条线段覆盖的范围是 ai到 bi,请问可以从中选出几条线段,使得任意两条选出的线段都没有重叠部分(有一个公共点也算重叠,比如说一条线段从 1 覆盖到 2,另一条线段从 2 覆盖到 3,这两条线段也算有重叠部分)?
PIPIOJ 1121: 最小区间覆盖问题 贪心
题目: http://39.106.164.46/problem.php?id=1121 思路: 我们先把所有的线段按照左端点从小到大排序,然后从总区间的左端点minl开始依次枚举符合要求(即小区间的左端点的值要小于等于minl,且右端点的值要大于等于minl)的小区间,从中选择一个右端点值最大的区间,ans++,直到minl大于等于R为止,说明我们得到的现在的线段集合已经可以完全覆盖总区间;若到最后minl仍然小于R,说明所有的线段都用上都无法覆盖总区间,那么就输出-1。 代码如下: #include&l
贪心 区间覆盖
给定 N 个闭区间 [ai,bi] 以及一个线段区间 [s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。 输出最少区间数,如果无法完全覆盖则输出 −1。 输入格式 第一行包含两个整数 s 和 t,表示给定线段区间的两个端点。 第二行包含整数 N,表示给定区间数。 接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。 输出格式 输出一个整数,表示所需最少区间数。 如果无解,则输出 −1。 数据范围 1≤N≤105, −109≤ai≤bi≤109, −109≤s≤t≤109 输入样例:
【ACWing】4195. 线段覆盖
题目地址: https://www.acwing.com/problem/content/description/4198/ 在一个坐标轴上有nnn条线段。每条线段的每个端点的坐标都为整数。可能存在退化成点的线段。线段之间可以相互交叉、嵌套甚至重合。请你计算,对于每个k∈1,2,…,nk∈{1,2,…,n}k∈1,2,…,n,坐标轴中共有多少个整数坐标的点满足恰好被kkk条线段覆盖。注意,左右端点分别为li,ril_i,r_ili,ri的线段覆盖点xxx当且仅当li≤x≤ril_i≤x≤r_ili≤x
4195 线段覆盖(差分)
1. 问题描述: 在一个坐标轴上有 n 条线段。每条线段的每个端点的坐标都为整数。可能存在退化成点的线段。线段之间可以相互交叉、嵌套甚至重合。请你计算,对于每个 k∈{1,2,…,n},坐标轴中共有多少个整数坐标的点满足恰好被 k 条线段覆盖。注意,左右端点分别为 li,ri 的线段覆盖点 x 当且仅当 li ≤ x ≤ ri。 输入格式 第一行包含整数 n。接下来 n 行,每行包含两个整数 li,ri,表示一条线段的左右端点。 输出格式 一行 n 个整数,其中第 i 个整数表示坐标轴中满足恰好被
数据结构-连续线段-C语言-[输入n条线段各个端点坐标,求包含最多线段的连续线段]
连续线段题目描述题目分析实现思路代码实现 题目描述 平面上两个点(一个点由(x,y)坐标组成)可构成一个线段,两个线段如果有一个端点相同,则可构成一个连续线段。假设构成线段的两个端点为v1(x1,y1)和v2(x2,y2),在此满足x1<x2,其中v1称为线段的起点,v2为线段的终点。同样,对于连续线段来说,在此满足xi<xi+1(i=1…n-1,n为连续线段中的端点数,xi为相应端点的X轴坐标)。输入一组线段(用两个端点的x、y坐标表示线段,线段个数大于等于2,小于等于100),编程计算出连续
牛客练习赛34-C-little w and Segment Coverage(差分数组)
链接:https://ac.nowcoder.com/acm/contest/297/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 小w有m条线段,编号为1到m。 用这些线段覆盖数轴上的n个点,编号为1到n。 第i条线段覆盖数轴上的区间是L[i],R[i]...
Luogu P6146 [USACO20FEB]Help Yourself G
在一个数轴上有N条线段,第i条线段覆盖了从li到ri的所有实数(包含li和ri)。定义若干条线段的为一个包含了所有被至少一个线段覆盖的点的集合。定义若干条线段的为这些线段的并形成的连通块的数目。现在 Bessie 想要求出给定N条线段的所有子集(共有2N个)的复杂度之和对109+7取模的结果。你也许猜到了,你需要帮 Bessie 解决这个问题。但不幸的是,你猜错了!在这道题中你就是 Bessie,而且没有人来帮助你。一切就靠你自己了!
贪心算法之——线段覆盖问题
在线段覆盖这个题型中,简单就举两个例子。 一个是leetcode 435: https://leetcode-cn.com/problems/non-overlapping-intervals/ 一个是洛谷p1803:https://www.luogu.com.cn/problem/P1803 就从洛谷这道题看起吧,标准的线段覆盖问题,题目就已经明确说明: 现在各大 oj 上有 nn 个比赛,...
Codeforces1555E Boring Segments (思维 线段树) (线段树好题!)
题目链接: Boring Segments 超级推荐这个题, 感觉这个题超赞! 大致题意 给定n条线段, 每条线段覆盖区间为[l, r], 花费为c. 现在可以从中任意选择若干条线段, 使得这些线段覆盖[1, m]区间. 而我们选择这些线段的代价是: 被选择的线段中花费最大值 - 花费最小值. 问: 最小的代价是多少. (题目保证一定存在解.) 解题思路 思维 一般求极值的题目, 尺取法是很常见的一种做法. 对于本题而言, 我们希望极值之差最小, 相当于我希望选择的这若干条线段花费近可能接近. 由于我们可以
[数据结构 & 算法] codevs1214 线段覆盖
题目描述Description 给定x轴上的N(0 输入描述Input Description 输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线段的二个端点的坐标。 输出描述Output Description 输出第一行是一个整数表示最多剩下的线段数。 样例输入Sam
C++题解(17) 狐猬编程: 640.线段覆盖
接下来有N行,每行两个整数:s[i],e[i]。我们可以判段前一段右端点是否大于当前这段的左端点,如果是,证明两条线段相交了。在一条数轴上,有N条线段,第i条线段的左端点是s[i],右端点是e[i]。),则输出“impossible”, 如果没有重叠则输出“possible”。第一行,一个整数G,表示有G组测试数据。共G行,每行一个字符串,不含双引号。输出文件名:640.out。输入文件名:640.in。
1295

被折叠的 条评论
为什么被折叠?



