• 奶酪sol


    奶酪

    • 直接用并查集维护连通性
    • 然而我用了连边后bfs,较慢
    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    #define SZ(x) ((int)x.size())
    #define ALL(x) x.begin(),x.end()
    #define U(i,u) for(register int i=head[u];i;i=nxt[i])
    #define rep(i,a,b) for(register int i=(a);i<=(b);++i)
    #define per(i,a,b) for(register int i=(a);i>=(b);--i)
    using namespace std;
    typedef long double ld;
    typedef long long ll;
    typedef unsigned int ui;
    typedef pair<int,int> PII;
    typedef vector<int> VI;
    template<class T> inline void read(T &x){
    	x=0;char c=getchar();int f=1;
    	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
    	while(isdigit(c)){x=x*10+c-'0';c=getchar();}x*=f;
    }
    template<class T> inline void cmin(T &x, T y){x=x<y?x:y;}
    template<class T> inline void cmax(T &x, T y){x=x>y?x:y;}
    const int N=2010;
    const ld ex=1e-8;
    int n,s,t;
    ld h,r,x[N],y[N],z[N];
    int head[N],nxt[N*N],v[N*N],cnt;
    int ge[N];
    void add(int a,int b){
    	nxt[++cnt]=head[a];head[a]=cnt;v[cnt]=b;
    }
    ld calc(int i,int j){
    	if(i==j)return 0;
    	else{
    		ld a=x[i]-x[j],b=y[i]-y[j],c=z[i]-z[j];
    		return sqrt(a*a+b*b+c*c);
    	}
    }
    void bfs(){
    	queue<int>q;
    	q.push(s);ge[s]=1;
    	while(SZ(q)){
    		int u=q.front();q.pop();
    		U(i,u){
    			if(ge[v[i]]==1)continue;
    			else{
    				ge[v[i]]=1;q.push(v[i]);
    				if(v[i]==t)return;
    			}
    		}
    	}
    }
    int main(){
    	int T;read(T);while(T--){
    		memset(head,0,sizeof(head));
    		memset(ge,0x3f,sizeof(ge));
    		read(n);scanf("%Lf %Lf",&h,&r);rep(i,1,n)scanf("%Lf %Lf %Lf",&x[i],&y[i],&z[i]);
    		s=n+1;t=n+2;
    		rep(i,1,n)rep(j,1,n)if(i^j)if(calc(i,j)-2*r<=ex)add(i,j);
    		rep(i,1,n)if(h-z[i]-r<=ex)add(s,i);rep(i,1,n)if(z[i]-0-r<=ex)add(i,t);
    		bfs();
    		if(ge[t]<0x3f3f3f3f)printf("Yes
    ");
    		else printf("No
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    使用Speex中的AEC模块,提高声音质量(转)
    音频编解码speex库的使用方法
    VC 多线程编程(转)
    并口、串口、COM口区别
    用GDB调试程序
    [转]PCM文件格式
    PreTranslateMessage作用和使用方法
    音频编解码标准
    VS2010 运行速度加快方法(转)
    ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
  • 原文地址:https://www.cnblogs.com/hangzz/p/13405555.html
Copyright © 2020-2023  润新知