题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1112

题意:n根线段,要拿走一些,使得任何的线段的左段没有在某一个线段的内部。

其实说白了,就是拿走最少的线段,使得不重合。

数据量很小,100,直接LIS O(n^2)搞。

首先按x从小到大排,然后,按x搞lis 跟前面的线段的y比,然后记录前驱就ok了。

然后输出,刚开始准备递归输出的,想了下,没出来,就暴力的又存了一遍,其实还是可以递归输出的,只要找最前的一个线段,这里的最前的线段不确定,就利用一个ans变量,看要递归多少层。

#include <bits/stdc++.h>
using namespace std;
#define maxn 105 struct Line
{
int x,y;
} lines[maxn]; bool cmp(Line a,Line b)
{
return a.x<b.x;
} int dp[maxn];
int prev[maxn];
int ans = ; void print (int pos)
{
if(ans!=)
{
--ans;
print(prev[pos]);
}
printf("%d %d\n",lines[pos].x,lines[pos].y);
} int main()
{
memset(dp,,sizeof(dp));
int n;
scanf("%d",&n);
for(int i=; i<n; i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(x>y)
swap(x,y);
lines[i].x = x,lines[i].y = y; }
sort(lines,lines+n,cmp);
dp[] = ;
for(int i=; i<n; i++)
{
int k = ;
int pos = -;
for(int j = ; j<i; j++)
{
if(lines[j].y<=lines[i].x&&k<dp[j])
{
k = dp[j];
pos = j;
}
}
dp[i] = k + ;
if(pos!=-)
prev[i] = pos;
} ans = ;
int pos = -;
for(int i=; i<n; i++)
{
if(ans<dp[i])
{
ans = dp[i];
pos = i;
}
}
printf("%d\n",ans);
/*
vector<Line> vaj;
for(int i=0; i<ans; i++)
{
vaj.push_back(lines[pos]);
//printf("%d %d\n",lines[pos].x,lines[pos].y);
pos = prev[pos];
} for(int i = ans-1;i>=0;i--)
printf("%d %d\n",vaj[i].x,vaj[i].y);
*/
print(pos); return ;
}

ural 1112,LIS的更多相关文章

  1. POJ 3671 Dining Cows (DP,LIS, 暴力)

    题意:给定 n 个数,让你修改最少的数,使得这是一个不下降序列. 析:和3670一思路,就是一个LIS,也可以直接暴力,因为只有两个数,所以可以枚举在哪分界,左边是1,右边是2,更新答案. 代码如下: ...

  2. POJ 3670 Eating Together (DP,LIS)

    题意:给定 n 个数,让你修改最少的数,使得它变成一个不下降或者不上升序列. 析:这个就是一个LIS,但是当时并没有看出来...只要求出最长LIS的长度,用总数减去就是答案. 代码如下: #inclu ...

  3. hdu3998 Sequence(最大流,LIS)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Sequence Time Limit: 2000/1000 MS (Java/O ...

  4. UVa 111 History Grading (简单DP,LIS或LCS)

    题意:题意就是坑,看不大懂么,结果就做不对,如果看懂了就so easy了,给定n个事件,注意的是, 它给的是第i个事件发生在第多少位,并不是像我们想的,第i位是哪个事件,举个例子吧,4 2 3 1, ...

  5. 动态规划面试题基础合集1--数学三角形,LIS , LCS, CSD

    动态规划的一般思路是分为四步,即:寻找最优子结构.递归定义最优子结构.自底向上求解最优子结构和构造最优解. 接下来我列举出几个常见的动态规划面试题进行说明. (1)数学三角形:比较简单,直接贴一个我看 ...

  6. HDOJ 题目3564 Another LIS(线段树单点更新,LIS)

    Another LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  7. CodeForces - 76F:Tourist (旋转坐标系,LIS)

    pro:有一个驴友,以及给定N个表演地点xi和时间ti,驴友的速度不能超过V. 问他在起点为原点和不设置起点的情况下分别最多参观多少个表演. sol:BZOJ接飞饼见过:clari也在camp的DP专 ...

  8. 【HDOJ6635】Nonsense Time(时间倒流,lis)

    题意:给定n个数的数列,第i个数为a[i],刚开始所有位置都处于禁用状态,第i次之后位置p[i]变为可用,求每次变化后的lis长度 n,a[i],p[i]<=5e4 保证a[i],p[i]均为随 ...

  9. ural 1104,暴力取模

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1104 题目大意:输入一个字符串(数字与大写字母组成),输出n,n满足此字符串为n进制时, ...

随机推荐

  1. G面经prepare: BuyGoods

    给你一部分钱和一些不同价钱的商品,如何在最多买K件商品的情况下尽可能多的花掉手里的钱. 举例:口袋里的钱数: 10; K=2 产品价格: [3, 6, 8, 7, 9] 输出 3, 7 Backtra ...

  2. 【你吐吧c#每日学习】11.10 C# Data Type conversion

    implicit explicit float f=12123456.213F int a = Convert.ToInt32(f); //throw exception or int a = (in ...

  3. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  4. paper 11:matlab中fix函数,floor函数,ceil函数,round函数的区分

    1)fix(n)朝零方向取整,这是一类应用在整数取值上的函数,就如同以前我们所研究的求整问题,例如,fix(pi)=3;fix(-1.3)=-1; fix(1.3)=1; 2)round(n):四舍五 ...

  5. paper 7:支持向量机系列四:Outliers —— 介绍支持向量机使用松弛变量处理 outliers 方法。

    在最开始讨论支持向量机的时候,我们就假定,数据是线性可分的,亦即我们可以找到一个可行的超平面将数据完全分开.后来为了处理非线性数据,使用 Kernel 方法对原来的线性 SVM 进行了推广,使得非线性 ...

  6. IE和FF区别关于css和js

    css 1.ul标签FF中有padding值,没有margin,IE中相反 解决办法:将ul的padding和margin都设为0, js 1.IE中innerText在火狐中没有,使用textCon ...

  7. Android中的通知—Notification 自定义通知

    Android中Notification通知的实现步骤: 1.获取NotificationManager对象NotificationManager的三个公共方法:①cancel(int id) 取消以 ...

  8. E2PROM与Flash的引脚图

    E2PROM(24C02):

  9. Unicode : RLO

    分类:备忘,Unicode,Perl 我们一般的输入文字的方向是从左往右,但是世界上总有特例,阿拉伯国家是从右到左的书写方式.经常看到微信里面好友得瑟,也就拿过来总结一下. 每个语言都能实现字符串反转 ...

  10. mysql主从同步及清除信息

    主:reset master; 从:reset slave all; mysql主从配置: 1.MySQL主配置文件增加如下:default-storage-engine = innodbinnodb ...