線段覆蓋問題

2021-10-02 09:31:19 字數 928 閱讀 2914

題目描述:

n+e最近在研究線段覆蓋問題。

n+e有n條線段和⼀個數軸,數軸⽆限長,每條線段在數軸上都有⼀個固定起點si和固定終點ei,其中si和ei都是整數。

放在數軸上的線段不能重合,不能重合定義為:對於兩條不同線段(不妨設為第i條和第j條),⼀定要滿⾜si≥ej或ei≤sj。

現在n+e將線段放在數軸上,請問他最多能在數軸上放多少線段?

輸入:第⼀⾏1個數n,表示線段數。

接下來2到n+1⾏,每⾏兩個數,依次表示si和ei。

輸出:輸出⼀⾏表示最多能放多少線段。

樣例輸入:

52 4

1 12

4 57 10

7 8樣例輸出:

3提示 :

對於30%資料,1≤n≤20

對於60%資料,1≤n≤1000

對於100%資料,1≤n≤50000,1≤si,ei≤1e8

線段覆蓋問題,又稱線段的最大相容問題,其貪心思想為:

右端點相同的,選長度短的排在前面;不相同的,則公升序排列,最後遍歷一遍,後面乙個的左端點若大於等於前面乙個的右端點,則說明二者相容,最終答案加一。

#include

#define ll long long

using namespace std;

struct stu

stu[

50005];

bool cmp

(stu x,stu y)

intmain()

sort

(stu+

1,stu+

1+n,cmp)

;int ans=

0,r=0;

for(

int i=

1;i<=n;i++)}

cout

}

線段覆蓋問題

在乙個數軸上有n條線段,現要選取其中k條線段使得這k條線段兩兩沒有重合部分,問最大的k為多少。最左邊的線段放什麼最好?顯然放右端點最靠左的線段最好,從左向右放,右端點越小妨礙越少 其他線段放置按右端點排序,貪心放置線段,即能放就放 洛谷p1803 凌亂的yyy 線段覆蓋 includeusing n...

1214線段覆蓋問題 貪心法

題目描述 給定x軸上的n 0輸入描述 輸入第一行是乙個整數n。接下來有n行,每行有二個空格隔開的整數,表示一條線段的二個端點的座標。輸出描述 輸出第一行是乙個整數表示最多剩下的線段數。樣例輸入 6 3 1 3 2 5 樣例輸出 0貪心法 該線段覆蓋問題其實本質上是貪心演算法裡面的最大不相交覆蓋問題。...

線段樹線段覆蓋(離散化 區間覆蓋)

n n 10000 個人依次貼海報,給出每張海報所貼的範圍li,ri 1 li ri 10000000 求出最後還能看見多少張海報。input 第一行 樣例個數t 第二行 貼海報的人n 第三行 每個人貼海報的範圍 接下來n行 每個人貼海報的範圍 output 對於每乙個輸入,輸出最後可以看到的海報張...