51Nod1133 不重疊的線段

2021-07-22 07:06:45 字數 773 閱讀 1526

x軸上有n條線段,每條線段有1個起點s和終點e。最多能夠選出多少條互不重疊的線段。(注:起點或終點重疊,不算重疊)。

例如:[1 5][2 3][3 6],可以選[2 3][3 6],這2條線段互不重疊。

經典的序列上的區間問題。

明顯的貪心

把右端點從小到大排乙個序(第一關鍵字),左端點從小到大排乙個序(第二關鍵字)。

然後模擬一遍就可以了。

為什麼這樣是對的

很明顯,右端點越小越優,如果有兩段區間相交,那麼就選右端點更小的那乙個,因為這樣影響會更小。

但是為什麼還有把左端點當做第二關鍵字呢?

比如說有兩段區間[5,5],[1,5],這兩段區間明顯是可以一起選的,如果先選[1,5]再選[5,5]就會得到答案2。

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

using

namespace

std;

const

int maxn=100007;

int i,j,k,l,t,n,m,ans,r;

struct nodea[maxn];

bool cmp(node x,node y)

}printf("%d\n",ans+1);

}

51Nod 1133 不重疊的線段

x軸上有n條線段,每條線段有1個起點s和終點e。最多能夠選出多少條互不重疊的線段。注 起點或終點重疊,不算重疊 例如 1 5 2 3 3 6 可以選 2 3 3 6 這2條線段互不重疊。input 第1行 1個數n,線段的數量 2 n 10000 第2 n 1行 每行2個數,線段的起點和終點 10 ...

51nod 1133 不重疊的線段

x軸上有n條線段,每條線段有1個起點s和終點e。最多能夠選出多少條互不重疊的線段。注 起點或終點重疊,不算重疊 例如 1 5 2 3 3 6 可以選 2 3 3 6 這2條線段互不重疊。input 第1行 1個數n,線段的數量 2 n 10000 第2 n 1行 每行2個數,線段的起點和終點 10 ...

51Nod 1133 不重疊的線段

1133 不重疊的線段 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 x軸上有n條線段,每條線段有1個起點s和終點e。最多能夠選出多少條互不重疊的線段。注 起點或終點重疊,不算重疊 例如 1 5 2 3 3 6 可以選 2 3 3 6 這2條線段互不重疊。inp...