首页 > 其他分享 >51nod 1133 不重叠的线段

51nod 1133 不重叠的线段

时间:2023-02-07 12:00:21浏览次数:45  
标签:node 重叠 51nod 线段 long 1133 int ans


X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。

例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。

 收起

输入


第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9)


输出


输出最多可以选择的线段数量。


输入样例


3 1 5 2 3 3 6


输出样例


2


分析:

贪心思想,写这题的原因是因为这题要突破一般的排序思维后就变得很简单,我们要以右端点为基准进行排序,因为尽量选取右端点少的会对整体的影响小,且最优。如果按照正常思维排序且把长度考虑进来,会很麻烦,卡了我一段时间。

 

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;


struct node
{
long long l,r;
}a[10005];
bool cmp(node x,node y)
{
if(x.r==y.r)
return x.l<y.r;
else
return x.r<y.r;
}
int main()
{
int n;
while(~scanf("%d",&n))
{

for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a[i].l,&a[i].r);
}
sort(a+1,a+n+1,cmp);
long long ans=1;
long long last=a[1].r;
for(int i=1;i<=n;i++)
{
if(a[i].l>=last)
{
ans++;
last=a[i].r;
}

}
printf("%lld\n",ans);

}
return 0;
}

标签:node,重叠,51nod,线段,long,1133,int,ans
From: https://blog.51cto.com/u_14932227/6041866

相关文章

  • 51Nod 1050 循环数组最大子段和
    N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的......
  • [思路笔记] 线段树合并与你
    明天再来补最后一题的思路。CF208EBloodCousins题目大意给一棵\(n\)个点的树,点编号为\(1\)到\(n\)。共\(m\)次询问,每次询问给出一对整数\(v\)和\(p\),求有多......
  • Java蓝桥杯实现线段和点
    目录一、算法提高线段和点1、时间限制2、问题描述3、输入格式4、输出格式5、数据规模和约定 一、算法提高线段和点 1、时间限制0s内存限制:256.......
  • 线段树分裂合并
    线段树分裂与合并参考:bilibili分裂:把一棵线段树进行拆分合并:把两棵线段树进行合并可以利用线段树分裂合并解决区间拆分合并的问题前置:动态开点线段树合并图......
  • 【YBT2023寒假Day4 C】樱桃莓莓(交互)(四毛子分块)(线段树)
    樱桃莓莓题目链接:YBT2023寒假Day4C题目大意有一个黑盒操作满足交换律和结合律,有n个数,q次询问,每次选m个下标,你要计算所有不包含那m个下标的数进行黑盒操作之后的......
  • POJ 1436 Horizontally VisibleSegments(线段树成段更新+区间覆盖染色)
    DescriptionThereisanumberofdisjointverticallinesegmentsintheplane.Wesaythattwosegmentsarehorizontallyvisibleiftheycanbeconnectedbyaho......
  • POJ 2886(线段树+单点修改+约瑟夫环)
    DescriptionN childrenaresittinginacircletoplayagame.Thechildrenarenumberedfrom1to N inclockwiseorder.Eachofthemhasacardwithanon-zer......
  • C++ 树进阶系列之线段树和它的延迟更新
    1.前言线段树和树状数组有相似之处,可以用于解决区间类型的问题。但两者又各个千秋,树状数组本质是数组,有着树的形,可以借用树的一些概念。线段树是典型的二叉树结构,无论神......
  • 线段树学习笔记
    本条目持续更新中线段树1:建树单点修改区间求和关于线段树:假如我们有这样一个数列33280721那我们就可以建一个线段树大概长这样:由图可知编号为i的左......
  • 基于向量判断线段之间的位置关系
    我们知道在平面上两条直线的关系只有两种,也就是平行或相交,其中共线是平行的一种特殊情况。那么对于线段,由于不能无限延长,所以会在直线的关系上有所扩展,可以按照平行线和相......