数轴上有 n 条线段,第 i (1≤i≤n) 条线段覆盖的范围是 ai 到 bi,请问最多可以从中选出几条线段,使得任意两条选出的线段都没有重叠部分(有一个公共点也算重叠,比如说一条线段从 1 覆盖到...

计蒜客--T1890--线段覆盖 题目描述: 在坐标上有 n线段,每线段的左端ai,右端bi。现在你需要删去部分线段,使得剩下的线段除端外无公共部分。请你计最多能保留的线段数目。 输入描述: 第一行一个整数 n(1n106)n (1n10 6),表示线段数。接下来 n行,每行两个整数 ai,bi\ (0a_i < bi 10^6)ai,bi(0ai<bi106) 输出描述: 一... 阅读详情

这是一道线段覆盖问题,一般可以通过贪心算法来解决。具体方法如下:

  1. 将所有线段按照右端点升序排列。

  2. 遍历每一条线段,如果当前线段的左端点大于前一条线段的右端点,则选择当前线段。

  3. 统计选择的线段数即为答案。

因为每一次都选择的是右端点最小的线段,因此保证了不存在重叠部分。

线段覆盖(c++) 在一数轴上,有 N 线段,第 i 线段的左端是 ��si​,右端是 ��ei​。如果线段重叠(即使是端重叠重叠),则输出 “impossible”, 如果没有重叠则输出 “possible”。多组测试数据。第一行,一个整数 G ,表示有 G 组测试数据。每组测试数据格式如下:第一行,一个整数 N。接下来有 N 行,每行两个整数:��,��si​,ei​ ( 0 阅读详情

相关推荐

区间覆盖问题

类似问题:互动安排问题和选问题 区间覆盖问题 数轴上有n个闭区间[ai, bi],选择尽量少的区间覆盖指定线段[s, t]。 用贪心法解决这个问题的思路如下: (1)找到所有的、起小于s的区间 (2)把这些区间按照终,从小到大排序 (3)选择终最大的那个区间,设这个最大的终bi (4)现在问题变成了,“选择尽量少的区间覆盖指定线段[bi, t]” (5)用相

jiyanfeng1的专栏 2746

codevs P3027 线段覆盖 2

开学了骚话不止 班主任是美女。 我最近几天刷OJ很是颓废,在校是真的懒,拿了好多道题思考,没AC一道。 但是一回家就茅塞顿开,神奇。 记录一下防止以后忘记了 线段覆盖 2 问题引入 题目描述 Description 数轴上有n线段线段的两端都是整数坐标,坐标范围在0~1000000,每线段一个价值,请从n线段中挑出若干线段,使得这些线段两两不覆盖(端可以重合)且线段价值之和最大。 n...

Martisum的博客 339

线段覆盖问题

题目描述 Description数轴上有n线段线段的两端都是整数坐标,坐标范围在0~1000000,每线段一个价值,请从n线段中挑出若干线段,使得这些线段两两不覆盖(端可以重合)且线段价值之和最大。输入描述 Input Description第一行一个整数n,表示有多少线段。接下来n行每行三个整数, ai bi ci,分别代表第i线段的左端ai,右端bi(保证左端&lt;右...

qq_38367681的博客 3755

线段覆盖系列

线段覆盖1 给定x上的N(0 输入描述 Input Description     输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线的二个端的坐标。 输出描述 Output Description     输出第一行是一个整数表示最多剩下的线段数。 样例输入 Sample Input 3 6  3 1  3 2  5 样例输出 Sample O

ZJUCSqxy的博客 5230

不相交线段

数轴上有 n 线段,第 i (1in) 线段覆盖范围aibi,请问可以从中选出几条线段,使得任意两条选出线段没有重叠部分(有一个公共重叠,比如说一条线1 覆盖到 2,另一条线从 2 覆盖到 3,这两条线段重叠部分)?

zjy_goldfish的博客 372

PIPIOJ 1121: 最小区间覆盖问题 贪心

题目: http://39.106.164.46/problem.php?id=1121 思路: 我们先把所有的线段按照左端从小到大排序,然后从总区间的左端minl开始依次枚举符合要求(即小区间的左端的值要小于等于minl,且右端的值要大于等于minl)的小区间,从中选择一个右端值最大的区间,ans++,直到minl大于等于R为止,说明我们得到的现在的线段集合已经可以完全覆盖总区间;若到最后minl仍然小于R,说明所有的线段都用上都无法覆盖总区间,那么就输出-1。 代码如下: #include&l

化身孤岛的鲸o的博客 1295

贪心 区间覆盖

给定 N 个闭区间 [ai,bi] 以及一个线段区间 [s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。 输出最少区间数,如果无法完全覆盖则输出 −1。 输入格式 第一行包含两个整数 s 和 t,表示给定线段区间的两个端。 第二行包含整数 N,表示给定区间数。 接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端。 输出格式 输出一个整数,表示所需最少区间数。 如果无解,则输出 −1。 数据范围 1N105, −109aibi109, −109st109 输入样例:

m0_53203911的博客 827

【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当且仅当lixril_ixr_ili​x

数学、算法爱好者的博客 704

4195 线段覆盖(差分)

1. 问题描述: 在一个坐标上有 n 线段。每线段的每个端的坐标都为整数。可能存在退化成线段线段之间可以相互交叉、嵌套甚至重合。请你计,对于每个 k∈{1,2,…,n},坐标中共有多少个整数坐标的满足恰好被 k 线段覆盖。注意,左右端分别为 li,ri 的线段覆盖 x 当且仅当 li x ri。 输入格式 第一行包含整数 n。接下来 n 行,每行包含两个整数 li,ri,表示一条线的左右端。 输出格式 一行 n 个整数,其中第 i 个整数表示坐标中满足恰好被

二哈 946

数据结构-连续线段-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),编程计出连续

qq_37746855的博客 3146

牛客练习赛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]...

black_hole6的博客 445

Luogu P6146 [USACO20FEB]Help Yourself G

一个数轴上有N线段,第i线段覆盖了从li​到ri​的所有实数(包含li​和ri​)。定义若干线段的为一个包含了所有被至少一个线段覆盖的集合。定义若干线段的为这些线段的并形成的连通块的数目。现在 Bessie 想要求出给定N线段的所有子集(共有2N个)的复杂度之和对109+7取模的结果。你也许猜到了,你需要帮 Bessie 解决这个问题。但不幸的是,你猜错了!在这道题中你就是 Bessie,而且没有人来帮助你。一切就靠你自己了!

SandwichBK的博客 248

贪心算法之——线段覆盖问题

线段覆盖这个题型中,简单就举两个例子。 一个是leetcode 435: https://leetcode-cn.com/problems/non-overlapping-intervals/ 一个是洛谷p1803:https://www.luogu.com.cn/problem/P1803 就从洛谷这道题看起吧,标准的线段覆盖问题,题目就已经明确说明: 现在各大 oj 上有 nn 个比赛,...

qq_45013822的博客 7304

Codeforces1555E Boring Segments (思维 线段) (线段树好题!)

题目链接: Boring Segments 超级推荐这个题, 感觉这个题超赞! 大致题意 给定n线段, 每线段覆盖区间为[l, r], 花费为c. 现在可以从中任意选择若干线段, 使得这些线段覆盖[1, m]区间. 而我们选择这些线段的代价是: 被选择的线段中花费最大值 - 花费最小值. 问: 最小的代价是多少. (题目保证一定存在解.) 解题思路 思维 一般求极值的题目, 尺取法是很常见的一种做法. 对于本题而言, 我们希望极值之差最小, 相当于我希望选择的这若干线段花费近可能接近. 由于我们可以

Fau的博客 417

[数据结构 & 算法] codevs1214 线段覆盖

题目描述Description 给定x上的N(0 输入描述Input Description 输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线的二个端的坐标。 输出描述Output Description 输出第一行是一个整数表示最多剩下的线段数。 样例输入Sam

专注于计算机视觉与计算机图形学 451

C++题解(17) 狐猬编程: 640.线段覆盖

接下来有N行,每行两个整数:s[i],e[i]。我们可以判前一右端是否大于当前这的左端,如果是,证明两条线段相交了。在一数轴上,有N线段,第i线段的左端是s[i],右端是e[i]。),则输出“impossible”, 如果没有重叠则输出“possible”。第一行,一个整数G,表示有G组测试数据。共G行,每行一个字符串,不含双引号。输出文件名:640.out。输入文件名:640.in。

2301_78151773的博客 786
上一篇: 写一段C++的Fluent模拟电弧电磁力程序
下一篇: 用Java写一个登录的业务
不吃香菜的鱼
博客等级 码龄6年 2585粉丝 · 3579原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值