1091 線段的重疊

2022-03-27 13:57:42 字數 944 閱讀 7871

基準時間限制:1 秒 空間限制:131072 kb 分值: 5 難度:1級演算法題

x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,[10 20]和[12 25]的重疊部分為[12 20]。

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

input

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

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

output

輸出最長重複區間的長度。
input示例

5

1 52 4

2 83 7

7 9

output示例

4

先按起點從小到大的順序排一下序,如果起點相同則終點打的在排前面。然後做一次遍歷記錄最大重疊區間。

注意會有兩種重疊情況:

1.前面區間的終點比後面區間的終點小;

2.前面區間終點比後面區間大。

附ac**:

1 #include2

using

namespace

std;

3const

int n=55000;4

5struct

qa[n];910

bool

cmp(q a,q b)

1314

intmain()

20 sort(a,a+n,cmp);

21int res=a[0

].y;

22int ans=0;23

for(int i=1;i)

27 cout28return0;

29 }

1091 線段的重疊

x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。input 第1行 線段的數量n 2 n 50000 第2 ...

1091 線段的重疊

x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。收起第1行 線段的數量n 2 n 50000 第2 n 1行...

1091 線段的重疊

1091 線段的重疊 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏關注x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分...