社区讨论

c++80pts求条(玄关)

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhjtrwzo
此快照首次捕获于
2025/11/04 08:22
4 个月前
此快照最后确认于
2025/11/04 08:22
4 个月前
查看原帖
c++80pts求条
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e3+5;
ll T,n,h,r,pd=0;
struct fk
{
    ll x,y,z,d;
}a[N];
queue<fk> q;
int main(){
    cin>>T;
    for(int Tx=1;Tx<=T;Tx++){
        cin>>n>>h>>r;
        for(int i=1;i<=n;i++){
            cin>>a[i].x>>a[i].y>>a[i].z;
            a[i].d=0;
            if(a[i].z<=r){
                a[i].d=1;
                q.emplace(a[i]);
                if(a[i].z>=h-r&&!pd){
                    cout<<"Yes"<<endl;
                    pd=1;
                }
            }
        }
        while(q.size()&&!pd){
            ll rx=q.front().x,ry=q.front().y,rz=q.front().z;
            q.pop();
            for(int i=1;i<=n;i++){
                ll len=sqrt((rx-a[i].x)*(rx-a[i].x)+(ry-a[i].y)*(ry-a[i].y)+(rz-a[i].z)*(rz-a[i].z));//cout<<rx<<"|"<<ry<<" "<<rz<<endl;
                if(len<=2*r&&a[i].d!=1){
                    a[i].d=1;
                    q.emplace(a[i]);
                    if(a[i].z>=h-r){
                        cout<<"Yes"<<endl;
                        pd=1;
                        break;
                    }
                }
            }
            
        }
        while(q.size()){
            q.pop();
        }
        
        if(!pd){
            cout<<"No"<<endl;
        }
        pd=0;
    }

    return 0;
}

回复

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

正在加载回复...