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
5sample output1 52 4
2 83 7
7 9
4思路:
算是一道比較有代表的貪心簡單題吧,我們把這些線段按x公升序排序,之後把每條線段都遍歷一遍,對於我們現在遍歷中的一條線段p,我們在之前就記錄了p1卡前面出現的y最大的那條線段p2(p前面的與p1重疊部分最大的肯定y最大),求出p1,p2的重疊部分,以此類推
**:#include
using namespace std;
const int maxn = (int)5e4 + 10;
struct node
line[maxn];
bool cmp(node a,node b)
int solve(node a,node b)
int main()
printf("%d\n",ans);
return 0;
}
51nod 1091 線段的重疊 貪心
題目 x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。input 第1行 線段的數量n 2 n 50000 ...
51Nod 1091 線段的重疊 (貪心)
x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。input 第1行 線段的數量n 2 n 50000 第2 ...
51nod 1091 線段的重疊(貪心)
x軸上有n條線段,每條線段包括1個起點和終點。線段的重疊是這樣來算的,10 20 和 12 25 的重疊部分為 12 20 給出n條線段的起點和終點,從中選出2條線段,這兩條線段的重疊部分是最長的。輸出這個最長的距離。如果沒有重疊,輸出0。input 第1行 線段的數量n 2 n 50000 第2 ...