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...