求助
查看原帖
求助
1063714
ma13863674407楼主2024/10/27 19:28

各位dalao,请问为什么把代码1改成代码2就过了

代码1:

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
long long t,n,h,r,z[10005],x[10005],y[10005],b[100001000],t1,t2;
bool book[101000];
int main(){
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n>>h>>r;
		int sum=0;
		bool flag=0;
		for(int j=1;j<=n;j++){
			cin>>x[j]>>y[j]>>z[j];
			if(z[j]-r<=0){
			b[++sum]=j;
			if(z[j]+r>=h)
			{
				flag=1;
			}
		}
		}
		if(flag){
		//	cout<<'*';
	    cout<<"Yes"<<endl;
		continue;	
	}
	//cout<<'x';
		if(sum==0){
			cout<<"No"<<endl;
			continue;
		}
		memset(book,0,sizeof(book));
		t1=0,t2=sum;
        flag=1;
		long double r1=2*r;
		while(t1<=t2){
			t1++;
			for(int j=1;j<=n;j++){
				if(j==b[t1]||book[j])
				continue;
				if(z[j]>=z[b[t1]])
				{
					long double d=sqrt(1.0*pow(x[j]-x[b[t1]],2)+1.0*pow(y[j]-y[b[t1]],2)+1.0*pow(z[j]-z[b[t1]],2)); 
					
					if(d<=r1){
						book[j]=1;
						b[++t2]=j;
						if(z[b[t2]]+r>=h){
							cout<<"Yes"<<endl;
							flag=0;
							break;
						}
					} 
				}
			}
			if(!flag)
			break;
		}
		if(flag)
		cout<<"No"<<endl;
	}
}

代码2:

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
long long t,n,h,r,z[10005],x[10005],y[10005],b[1000000],t1,t2;
bool book[101000];
int main(){
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n>>h>>r;
		int sum=0;
		bool flag=0;	
		memset(book,0,sizeof(book));
		memset(b,0,sizeof(b));
		for(int j=1;j<=n;j++){
			cin>>x[j]>>y[j]>>z[j];
			if(z[j]-r<=0){
			b[++sum]=j;
			if(z[j]+r>=h)
			{
				flag=1;
			}
		}
		}
		if(flag){
		//	cout<<'*';
	    cout<<"Yes"<<endl;
		continue;	
	}
	//cout<<'x';
		if(sum==0){
			cout<<"No"<<endl;
			continue;
		}
	
		t1=0,t2=sum;
        flag=1;
		long double r1=2*r;
		while(t1<=t2){
			t1++;
			for(int j=1;j<=n;j++){
				if(j==b[t1]||book[j])
				continue;
				if(z[j]>=z[b[t1]])
				{
					long double d=sqrt(1.0*pow(x[j]-x[b[t1]],2)+1.0*pow(y[j]-y[b[t1]],2)+1.0*pow(z[j]-z[b[t1]],2)); 
					if(d<=r1){
						book[j]=1;
						b[++t2]=j;
						if(z[b[t2]]+r>=h){
							cout<<"Yes"<<endl;
							flag=0;
							break;
						}
					} 
				}
			}
			if(!flag)
			break;
		}
		if(flag)
		cout<<"No"<<endl;
	}
}
2024/10/27 19:28
加载中...