1214 线段覆盖wiki oi
给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数。有些线段之间会相互交叠或覆盖。请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点。所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分)。
输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线段的二个端点的坐标。
输出第一行是一个整数表示最多剩下的线段数。
3
6 3
1 3
2 5
2
0<N<100
分析:
贪心解法:首先将线段端点调整为左端点小于(或等于)右端点;第二,根据右端点将线段从小到大排序;第三,扫描一遍,每次遇到的第一个与当前的max不想交的即为最优选择。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<cmath>
#include<stack>
#include<ctype.h>
#include <algorithm>
using namespace std;
struct node
{
int a,b;
}s[];
int cmp(node x,node y)
{
return x.b<y.b;
}
int main()
{
int n;
cin>>n;
for(int i=; i<n; i++)
{
cin>>s[i].a>>s[i].b;
if(s[i].a>s[i].b) swap(s[i].a, s[i].b);
}
sort(s,s+n,cmp);
int ans=,max=-;
for(int i=; i<n; i++)
{
if(s[i].a>=max)
{
ans++;
max=s[i].b;
}
}
cout<<ans<<endl;
return ;
}
序列型动态规划(DP):前两步同上,第三步,dp[i] = max(dp[i], (dp[j]+1))。第四,选择dp数组中最大值即为结果。
#include <iostream>
#include <cstring>
using namespace std; int main()
{
int n,a[],b[],dp[];
cin >> n;
for(int i=; i<n; i++)
{
dp[i] = ;
cin >> a[i] >> b[i];
if(a[i]>b[i])
{
int t = a[i];
a[i] = b[i];
b[i] = t;
}
}
for(int i=n-; i>; i--)
{
for(int j=; j<i; j++)
{
if(b[j]>b[j+])
{
int t = b[j];
b[j] = b[j+];
b[j+] = t;
t = a[j];
a[j] = a[j+];
a[j+] = t;
}
}
} int max = ;
for(int i=; i<n; i++)
{
for(int j=; j<i; j++)
{
if(a[i]>=b[j])
dp[i] = dp[i]>(dp[j]+)?dp[i]:(dp[j]+);
if(max < dp[i]) max = dp[i];
//cout << "i:" << i << " j:" << j << " dp[i]:" << dp[i] <<" dp[j]:" << dp[j] << endl;
}
}
cout << max;
return ;
}
1214 线段覆盖wiki oi的更多相关文章
- codevs 1214 线段覆盖
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段 ...
- codevs 1214 线段覆盖/1643 线段覆盖 3
1214 线段覆盖/1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0< ...
- codevs 1214线段覆盖
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段,每 ...
- wikioi 1214 线段覆盖
题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段 ...
- (贪心 线段不相交问题)codeVs 1214 线段覆盖
题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段 ...
- codevs1214 线段覆盖
1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定x轴上的N(0<N<100)条线段, ...
- CODEVS3037 线段覆盖 5[序列DP 二分]
3037 线段覆盖 5 时间限制: 3 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 数轴上有n条线段,线段的 ...
- CODEVS1643 线段覆盖3[贪心]
1643 线段覆盖 3 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 在一个数轴上有n条线段,现要选 ...
- COGS 265线段覆盖[线段树]
265. 线段覆盖 ★★☆ 输入文件:xdfg.in 输出文件:xdfg.out 简单对比时间限制:2 s 内存限制:20 MB [问题描述] 有一根长度为 L 的白色条状物.有两种操 ...
随机推荐
- Jquery 遍历数组之$().each方法与$.each()方法介绍
$().each() 对于这个方法,在dom处理上用的比较多,如果一个html页面上面有多个checkbox,这时用$().each来处理checkbox是比较不错的; $("input[t ...
- 几个linux 下C/C++集成开发环境推荐
链接地址:http://www.lupaworld.com/article-210675-1.html 摘要: 一.AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件, ...
- MYSQL事务和锁
mysql事务(一)—转载 2012年12月20日 ⁄ Mysql数据库, 技术交流 ⁄ 暂无评论 一. 什么是事务 事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割 ...
- Linux 系统之Systemd
子贡问为仁.子曰:“工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者.”——孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术,知道其发展历程是非常重要的 ...
- hadoop配置及无法移动文件到hdfs故障解析
首先博主用的64位ubuntu,hadoop官方只提供32位版本,这样的话启动本地库无法兼容,需要自己编译为64位版本,或下载别人编译好的64位版本. 下载好需要在etc/hadoop目录下改动以下几 ...
- mybatis获取插入的语句主键(自增主键)
<insert id="insertUser" parameterType="User"> <selectKey keyProperty=&q ...
- Apache RewriteCond RewriteRule 入门和Laravel去掉index.php
Ci删除index.php办法: 创建.htaccess 文件放到网站的根目录下,文件中的内容如下: RewriteEngine onRewriteCond %{REQUEST_FILENAM ...
- 再探java基础——break和continue的用法
再探java基础——break和continue的用法 break break可用于循环和switch...case...语句中. 用于switch...case中: 执行完满足case条件的内容内后 ...
- A Brief Introduction to Multiset[STL]
基础 multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存 ...
- HDOJ 1043 Eight(A* 搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 思路分析: <1> 搜索算法: A*算法, Heuristic函数:曼哈顿距离 &l ...