1 条题解

  • 1
    @ 2023-11-10 14:52:58
    #include<bits/stdc++.h>
    using namespace std;
    int n,d;
    struct node{
    	double x1,x2;
    	bool dis=0;
    }pt[1055];
    bool cmp(node a,node b){
    	return a.x2<b.x2;
    }
    int ans=0;
    int main(){
    	cin>>n>>d;
    	for(int i=1;i<=n;i++){
    		double p,q;
    		cin>>p>>q;
    		if(q>d){
    			cout<<-1<<endl;
    			return 0;
    		}
    		double c=sqrt(d*d-q*q);
    		pt[i].x1=p-c;
    		pt[i].x2=p+c;
    	}
    	sort(pt+1,pt+n+1,cmp);
    	for(int i=1;i<=n;i++){
    		if(pt[i].dis)continue;
    		ans++;
    		pt[i].dis=1;
    		for(int j=1;j<=n;j++){
    			if(!pt[j].dis&&pt[i].x2>=pt[j].x1){
    				pt[j].dis=1;
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    326
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    3
    已通过
    2
    上传者