51nod-1091线段的重叠(贪心)

Posted lesroad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod-1091线段的重叠(贪心)相关的知识,希望对你有一定的参考价值。

技术分享图片

 

所有线段按起点从小到大排序,然后比较出最大的重叠部分。比如第i条线段和第j条线段进行比较找出重叠部分(j>i),当第j条线段的右端点<第i条线段的右端点,此时可以让i继续比较后面的线段;如果第j条线段的右端点>第i条线段的右端点,重叠部分并不会继续增大,所以需要让i+1条线段和后面的比较。

#include <bits/stdc++.h>
using namespace std;
const int N = 50004;
struct node
{
    int l, r;
} q[N];
bool cmp(node a, node b)
{
    if(a.l==b.l)
        return a.r<b.r;
    return a.l<b.l;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        scanf("%d%d", &q[i].l, &q[i].r);
    }
    sort(q, q+n, cmp);
    int ans = -1e9;
    for(int i=0; i<n-1; i++)
    {
        bool f = 0;
        for(int j=i+1; j<n; j++)
        {
            int a = max(q[i].l, q[j].l);
            int b = min(q[i].r, q[j].r);
            ans = max(ans, b-a);
            if(q[j].r>q[i].r) break; 
        }
    }
    printf("%d
", ans);
    return 0;
}

以上是关于51nod-1091线段的重叠(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 1091 线段的重叠(贪心+区间相关

51nod 1091 线段的重叠贪心/区间覆盖类

51nod-1091线段的重叠(贪心)

51Nod 1091 线段的重叠(贪心+区间相关,板子题)

51Nod 1133 不重叠的线段 | 典型贪心

51nod 1133 不重叠的线段 (贪心,序列上的区间问题)