CODEVS 3027 线段覆盖2
首先,先看题.....(虽然比较简单
3027 线段覆盖 2
数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大。
n<=1000
第一行一个整数n,表示有多少条线段。
接下来n行每行三个整数, ai bi ci,分别代表第i条线段的左端点ai,右端点bi(保证左端点<右端点)和价值ci。
输出能够获得的最大价值
3
1 2 1
2 3 2
1 3 4
4
数据范围
对于40%的数据,n≤10;
对于100%的数据,n≤1000;
0<=ai,bi<=1000000
0<=ci<=1000000
下面,呈上AC代码,外加详细解析:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 5 using namespace std; 6 7 const int maxn = 1003; 8 9 struct Line{ 10 int start; 11 int end; 12 int value; 13 }l[maxn]; 14 //确定一个结构体,用结构体定义数组,让其里面存储线段的起点、终点与线段长度 15 16 int dp[maxn];//此数组储存关于n条线段的最大价值 17 18 int cmp(const Line &a ,const Line &b)//用来sort排序 19 { 20 return a.end < b.end;//从小到大排序 返回终点较小的 21 } 22 int main() 23 { 24 int n; 25 scanf("%d",&n); 26 for(int i = 1; i <= n; i++) 27 { 28 int a,b,c;//a,b,c分别为线段起点、终点及长度 29 scanf("%d%d%d", &a, &b, &c); 30 l[i].start = a; 31 l[i].end = b; 32 l[i].value = c; 33 //将每条线段的起点、终点、长度储存进去 34 } 35 sort (l+1, l+n+1,cmp);//将l数组进行从小到大排序(按照左端点进行升序排序) 36 //l为地址,+1、+n+1为数组下标,注意左闭右开 37 for(int i = 1; i <= n; i++) 38 { 39 dp[i] = max (dp[i-1], l[i].value);//首先先进行第一次更新 40 for(int p = i - 1; p >= 1; p--) 41 { 42 if (l[p].end <= l[i].start)//p表示在i左边的那条线段,注意这是一个开区间,所以是"<=" 43 dp[i] = max (dp[i], dp[p] + l[i].value);//进行第二次更新 44 } 45 } 46 printf("%d",dp[n]);//输出dp[n] 47 return 0; 48 }
转载于:https://www.cnblogs.com/New-ljx/p/10343913.html
CODEVS 3027 线段覆盖2相关推荐
- CodeVS 3027 线段覆盖2(DP)
题目大意: http://codevs.cn/problem/3027/ 源码: #include <iostream>using namespace std;struct {int x, ...
- wikioi 3027 线段覆盖 2
题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段 ...
- [CODEVS 3037] 线段覆盖 5
描述 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~10^18,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大. 分析 提供两种思 ...
- 【多题合集】线段覆盖1、2、3
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给定x轴上的N(N<100)条线段,每个线段由它的二 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- ACM公选课第五节贪心4.14-5.4补+第六节上贪心线段覆盖
每一步都不从全局,找当下就好 特征(还有dp基础) 求解(比如最小生成树那个) 伪代码 就是每个房间的比例都不一样 要靠经验 事件序列问题(dp贪心经典题) 用贪心解,最先结束的,后面选最先结束且不重 ...
- P1803 凌乱的yyy / 线段覆盖
P1803 凌乱的yyy / 线段覆盖 https://www.luogu.org/problemnew/show/P1803 提交 题目提供者 yyy2015c01 嘤嘤嘤 评测方式 云端评测 标签 ...
- [Codevs] 1082 线段树练习3
1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的 ...
- 线段覆盖(洛谷P1803题题解,C++语言描述)
题目要求 P1803题目链接 分析 这题是一个线段覆盖问题,但并不是很复杂,也是贪心思想. 想要尽可能放线段,不能重合(可以正好相交),那就可以每一次只关注右端点,尽可能地选择剩余未选的线段中右端点最 ...
- 【codevs30123037】线段覆盖4、5,姗姗来迟
3012 线段覆盖 4 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标, ...
最新文章
- 发展大数据还有三道坎要迈
- matlab 句柄图像尝试
- Spring Cloud Sleuth 服务跟踪 将跟踪信息存储到数据库
- 希尔伯特曲线的绘制c语言,用四叉树和希尔伯特曲线做空间索引
- rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
- clickhouse原理解析与应用实践_Hybrid App (混合应用) 技术全解析 方案原理篇
- Gym 101102C---Bored Judge(区间最大值)
- Hadoop日志分析工具——White Elephant
- ul 原点显示_html ul li在div里圆点靠左对齐
- Java代码发送POST请求
- php获取当前页面select的值,关于JS获取select的值
- HTML ajax 上传文件限制文件的类型和文件大小
- Thinkphp列表搜索排序-----查
- 解析博图数据块(昆仑通态触摸屏自动命名)
- 独立院校转设,高考新生何去何从|转设对新生有哪些影响
- 运动控制 轨迹规划综述
- lstm实战,nlp情感分析(Kaggle)
- Python获取局域网IP(ping)
- 产品读书《让大象飞:激进创新,让你一飞冲天的创业术》
- 75 道 JavaScript 面试题
热门文章
- 语录帝——要想人前显贵,必须背地里遭罪
- iphone开发常用代码
- 谈谈互动型网站中垃圾贴的应对方案,互联网营销
- Android的富文本功能
- HTML5-canvas标签
- 用reloadRowsAtIndexPaths刷新单个cell 跳动问题
- xsl判断节点存在_[剑指offer]25删除链表中重复的节点
- 控制台输出Security Warning: The negotiated TLS 1.0 is an insecure protocol and is suported for backward c
- C#中如何获取一个二维数组的两维长度,即行数和列数?
- Linux下nohup、crontab的使用