社区讨论

并查集只有60蒟蒻妹子快要哭了

P3958[NOIP 2017 提高组] 奶酪参与者 7已保存回复 16

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
16 条
当前快照
1 份
快照标识符
@lo1frgod
此快照首次捕获于
2023/10/22 20:19
2 年前
此快照最后确认于
2025/11/21 10:13
4 个月前
查看原帖
CPP
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
	int x=0,f=1;char c=getchar();
	while(c<'0' || c>'9')
	{
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0' && c<='9')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}const int maxn=1003; 
int t,n,h,r,x[maxn],y[maxn],z[maxn],fa[maxn],cxia,cshang,xia[maxn],shang[maxn];

int ask(int x)
{
	if(fa[x]==x) return x;
	else return fa[x]=ask(fa[x]);
}
void bing(int x,int y)
{
	fa[y]=fa[x];
 } 
 double dis(int i,int j)
 {
 	double a=(x[i]-x[j])*(x[i]-x[j]);
 	double b=(y[i]-y[j])*(y[i]-y[j]);
 	double c=(z[i]-z[j])*(z[i]-z[j]);
 	return sqrt(a+b+c);
 }
int main()
{
	t=read();
	while(t--)
	{
		memset(x,0,sizeof(x));
		memset(y,0,sizeof(y));
		memset(z,0,sizeof(z));
		memset(fa,0,sizeof(fa));
		memset(xia,0,sizeof(xia));
		memset(shang,0,sizeof(shang));
		cxia=cshang=0;
		n=read();h=read();r=read();
		for(int i=1;i<=n;++i)
		{
			x[i]=read();y[i]=read();
			z[i]=read();fa[i]=i;
			if((max(z[i],0)-min(z[i],0))<=r)
			{
				cxia++;
				xia[cxia]=i;
			}
			if((max(z[i],h)-min(z[i],h))<=r)
			{
				cshang++;
				shang[cshang]=i;
			}
			
			}if(cxia==0 || cshang==0)
			{
				cout<<"No"<<endl;
				continue;
			}
		for(int i=1;i<=n;++i)
		{
			for(int j=i+1;j<=n;++j)
			{
				int a,b;
				if(z[i]>z[j]) a=i,b=j;
				else a=j,b=i;
				if(dis(a,b)<=2*r) bing(a,b);
			}
		}
		int f=0;
		for(int i=1;i<=cxia;++i)
		{
			for(int j=1;j<=cshang;++j)
			{
				int groundd=xia[i],skyy=shang[j];
				if(ask(groundd)==ask(skyy))
				{
					cout<<"Yes"<<endl;	
					f=1;
					break;
				}
				
			}
			if(f) break;
		}
		if(!f) cout<<"No"<<endl;
	}
}

回复

16 条回复,欢迎继续交流。

正在加载回复...