后六个点全WA,请dl来看看
查看原帖
后六个点全WA,请dl来看看
601527
zhuzl009楼主2023/11/18 21:31
#include <iostream>
#include <cstring>
#include <cmath>

using namespace std;

const int N = 1e3 + 5;

typedef unsigned long long ll;

struct node {
	ll x, y, z;
} a[N];

bool isjd[N];
ll n, h, r;

bool gett(ll i, ll j) {
	return r * 2 >= sqrt(((a[i].x - a[j].x) * (a[i].x - a[j].x) + (a[i].y - a[j].y) * (a[i].y - a[j].y) +
	                      (a[i].z - a[j].z) * (a[i].z - a[j].z)));
}

int main() {
	int t;
	cin >> t;
	while (t --) {
		memset(isjd, false, sizeof isjd);
		cin >> n >> h >> r;
		for (int i = 1; i <= n; i ++)
			cin >> a[i].x >> a[i].y >> a[i].z;

		for (int i = 1; i <= n; i ++)
			if (a[i].z - r <= 0)
				isjd[i] = true;

		for (int i = 1; i <= n; i ++) {
			if (isjd[i])
				continue;

			for (int j = 1; j <= n; j ++)
				if (gett(i, j) && isjd[j])
					isjd[i] = true;
		}

		bool flag = true;

		for (int i = 1; i <= n; i ++)
			if (a[i].z + r >= h && isjd[i]) {
				cout << "Yes\n";
				flag = false;
				break;
			}
		if (flag)
			cout << "No\n";
	}
	return 0;
}
2023/11/18 21:31
加载中...