1 条题解
-
0
圆心解法
- 在两个维度上取圆内的点坐标的平均值为圆心。
- 在两个维度上计算圆内的点坐标的极值,取中点为圆心。
- 在两个维度上切片,取圆内的点密度最大的坐标为圆心。
- 在两个维度上取到圆内所有点距离之和最小的坐标为圆心。
半径解法
- 取圆内的点距圆心的最大距离为半径。
- 计算圆内的点距圆心的平均距离,利用积分折算为半径。
- 计算圆内的点的密度,估计圆的面积,利用圆的面积公式折算为半径。
- 在两个维度上计算圆内的点坐标的极值,取极差为直径,然后折算为半径。
参考程序
// 圆心解法:解法 1 // 半径解法:解法 3 #include <bits/stdc++.h> using namespace std; int main() { freopen("circle.in", "r", stdin); freopen("circle.out", "w", stdout); int n = 100000, r = 1000; long long oc = 0; long double xs = 0, ys = 0; for (int i = 1; i <= n; i++) { long double x, y; int z; cin >> x >> y >> z; if (z) oc++, xs += x, ys += y; } cout << fixed << setprecision(3); cout << xs / oc << ' ' << ys / oc << endl; cout << sqrtl(oc * 1.0 * r * r / n / acos(-1)) << endl; return 0; }
- 1
信息
- ID
- 110
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 21
- 已通过
- 5
- 上传者