1 条题解

  • 0
    @ 2023-6-21 20:10:01

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    #define N 25100
    struct node{
    	double x,y;
    }a[N];
    int cmp(node a,node b){
    	return a.x<b.x;
    }
    int t,n,l,w,cnt;
    int main(){
    	cin>>t;
    	while(t--){
    		cnt=0;
    		cin>>n>>l>>w;
    		for(int i=1;i<=n;i++){
    			int x,y;
    			cin>>x>>y;
    			if(y<=w/2) continue;
    			cnt++;
    			a[cnt].x=x-sqrt(y*y-w*w/4.0);
    			a[cnt].y=x+sqrt(y*y-w*w/4.0);
    		}
    		sort(a+1,a+cnt+1,cmp);
    		double t=0;
    		int ans=0,flag=1,i=1;
    		while(t<l){
    			ans++;
    			double s=t;
    			for(;a[i].x<=s&&i<=cnt;i++)
    				if(t<a[i].y) t=a[i].y;
    			if(t==s&&s<l){
    				cout<<"-1"<<endl;
    				flag=0;
    				break;
    			}
    		}
    		if(flag) cout<<ans<<endl;
    	}
    	return 0;
    } 
    
    • 1

    信息

    ID
    1047
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者