ABC207 C - Many Segments(暴力,线段判交)
Posted live4m
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABC207 C - Many Segments(暴力,线段判交)相关的知识,希望对你有一定的参考价值。
题意:
解法:
直接O(n^2)枚举点对,没对check以此即可.
对于开区间的处理:
我将[l,r)变成了[l,r-0.3],显然这样不影响相交的判断.
code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e3+5;
double l[maxm],r[maxm];
int n;
bool check(int i,int j){
double lc=max(l[i],l[j]);
double rc=min(r[i],r[j]);
return lc<=rc;
}
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
cin>>l[i]>>r[i];
if(x==2)r[i]-=0.3;
else if(x==3)l[i]+=0.3;
else if(x==4)l[i]+=0.3,r[i]-=0.3;
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(check(i,j)){
ans++;
}
}
}
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
solve();
return 0;
}
以上是关于ABC207 C - Many Segments(暴力,线段判交)的主要内容,如果未能解决你的问题,请参考以下文章
[Codeforces] Too Many Segments
code forces1249D Too Many Segments
Codeforces 1249 D2. Too Many Segments (hard version)