D 線段線段

2021-08-22 07:04:15 字數 775 閱讀 9669

x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10201020和12251225的重疊部分為12201220。

給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。

input

第1行:線段的數量n(2 <= n <= 50000)。 

第2 - n + 1行:每行2個數,線段的起點和終點。(0 <= s , e <= 10^9)

output

輸出最長重複區間的長度。

sample input

5

1 52 4

2 83 7

7 9

sample output

4
#include#include#includeusing namespace std;

const int m=50000+10;

const int n=70000+10;

long long b1[n];

struct nodestr[m];

int cmp(node x,node y)

sort(str,str+n,cmp);

long long k=str[0].b,j=0;

for(int i=1;ik)

else b1[j++]=str[i].b-str[i].a;

} sort(b1,b1+j);

cout

}

2018 08 18 線段樹(線段樹)

線段樹 描述請你維護乙個線段樹 支援一下操作 a x l r 區間 and x o x l r區間 or x x x l r 區間 xor x s l r 區間求和 輸入乙個數 t表示資料組數 乙個數n表示初始序列長 m表示查詢 隨後n個整數 接下來m次詢問 如上 輸出所以s次詢問的答案 樣例輸入 ...

刪除多餘線段 線段樹

2020 3 24 更新 一,簡介 二,作用及原理 三,線段樹中最重要的 延遲標記 四,額外說明 五,具體實現 一,簡介線段樹,一種樹狀資料結構,顧名思議,樹的每乙個節點儲存的是線段的某種資訊,因此,你需要宣告乙個結構體來代表樹上的每乙個節點,最基本的資訊有線段的左端點,右端點,常用的有線段區間的元...

Codeforces 755D(思維 線段樹)

從x到x k點,其實只要求從x到x k之間的點有多少條線超過x x k這條線就行,一開始直接暴力,就時間超時了,而用線段樹維護就快多了。1 include 2 using namespace std 3 typedef long long ll 4 define n 1000010 5 define...