ABC355 D
D-Intersecting Intervals
我们思考如何计算不交的线段数量
首先总的线段如果全部相交 那么线段数应为n*(n-1)/2
那么对于每对r[i]<l[i]都为不交的线段
所以我们需要计算不交的线段数 同时删去自己本身
点击查看代码
#include<bits/stdc++.h>
#define int long long
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define pii pair<int,int>
using namespace std;
void solve(){
int n;cin>>n;
vector<int>l(n),r(n);
for(int i=0;i<n;i++){
cin>>l[i]>>r[i];
}
sort(all(l));sort(all(r));
int ans=n*(n-1)/2;
for(int i=0,j=0;i<n;i++){
while(j<n&&r[j]<l[i])j++;
ans-=j;
}
cout<<ans<<'\n';
}
signed main(){
ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
int _=1;
// cin>>_;
while(_--)solve();
}
本文作者:archer233
本文链接:https://www.cnblogs.com/archer233/p/18213071
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步