5.蓝桥派对
思路 :一个区间与多少个其他区间有关联,先对所有区间左端点和右端点从小到大排序,对于每个询问,我们先算出[1,r]这个区间里有多少个区间的起点即区间总数,使用upper_bound函数,然后使用lower_bound函数计算出第一个大于等于l的右端点是第几个,然后起点个数减终点个数再减去自身即为与其他区间有关联的个数
Code:
cpp
constexpr int N=4e5+5,mod=1e9+7;
PII q[N];
int a[N],b[N];
void solve()
{
int n,m;cin>>n>>m;
for(int i=0;i<n;i++)
{
int x,y;cin>>x>>y;
q[i]={x,y};
a[i]=x,b[i]=y;
}
sort(a,a+n);
sort(b,b+n);
for(int i=0;i<n;i++)
{
int l=q[i].first,r=q[i].second;
int x=upper_bound(a,a+n,r)-a;
int y=lower_bound(b,b+n,l)-b;
cout<<x-y-1<<endl;
}
}