给你n个线段,代表线段的左右端点,问最少删几条线段,使得剩下当中存在一个线段与所有剩下的所有线段都有交集

简介: 考虑枚举每一条线段,求以此线段与所有线段都有交集,需要删除的线段数。那么对于此线段[L,R],右端点小于L的,与它无交集,需要全删掉。同理左端点大于R的线段,也需要都删掉。那么剩下的问题,就是需要删几个了。
#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
#include<stack>
#include<queue>
#include<cstdio>
#include<cmath>
#include<string.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
const int inf=99999999;
const int mod=1e9+7;
int a[maxn],b[maxn],x[maxn],y[maxn];
int main()
{
    int t;    
    scanf("%d",&t);
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i]>>b[i];
            x[i]=a[i];
            y[i]=b[i];
        }
        sort(x+1,x+1+n);
        sort(y+1,y+1+n);
        ll minn = inf;
        for(int i=1;i<=n;i++)
        {
            ll l=lower_bound(y+1,y+1+n,a[i])-y-1;
            ll r=n-(upper_bound(x+1,x+1+n,b[i])-x)+1;
            minn=min(minn,l+r);
        }
        cout<<minn<<endl;
    }
}
目录
相关文章
|
1月前
假设你正在玩跳格子(所有格子排成一个纵列)游戏。需要 跳完n 个格子你才能抵达终点。 每次你可以跳 1 或 2 个格子。你有多少种不同的方法可以到达终点呢? 注意:给定 n 是一个正整数。
假设你正在玩跳格子(所有格子排成一个纵列)游戏。需要 跳完n 个格子你才能抵达终点。 每次你可以跳 1 或 2 个格子。你有多少种不同的方法可以到达终点呢? 注意:给定 n 是一个正整数。
|
1月前
|
存储 算法 Java
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
26 0
|
10月前
|
人工智能 算法 BI
【线段树】找最长“白色”线段
【线段树】找最长“白色”线段
48 0
|
12月前
判断点是否在线段上
判断点是否在线段上
93 0
|
12月前
判断线段是否相交
判断线段是否相交
65 0
LeetCode 1828. 统计一个圆中点的数目
给你一个数组 points ,其中 points[i] = [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。
93 0
|
算法 Java
Java计算四边形中心点和两条线段交点算法
Java计算四边形中心点和两条线段交点算法
129 0
Java计算四边形中心点和两条线段交点算法
|
算法
如何判断一个点是否在多边形内部?
如何判断一个点是否在多边形内部?
962 0

热门文章

最新文章