方伯伯浇水2

题目描述

方伯伯有一块玉米田,玉米田可以视为平面直角坐标系上横纵坐标在 -10^510^5 范围内(包括边界)的一片正方形区域。玉米田内的每个整点(横纵坐标均为整数的点)上都种着一株玉米。

方伯伯连续 m 天对玉米田进行浇水,每天他会选出一个圆心坐标为 (x,y),半径为 r 的圆形区域,对其中(不包括边界)的每株玉米浇一次水(如果圆形区域超过玉米田边界,超过部分无需浇水)。最开始所有玉米的品质都是 1,每次浇水会让该株玉米的品质增 1

m 天过后,到了收获的季节,方伯伯想采用抽样检测的方式来调查玉米田的品质。方伯伯给出了 10 株玉米的坐标,他想调查这 10 株玉米品质的平均数。

输入格式

第一行输入一个正整数 mm≤10^5),代表浇水天数。接下来 m 行,每行输入三个整数 x_i,y_i-10^5≤ x_i,y_i≤ 10^5)和 r_i0<r_i≤10^5),代表第 i 天浇水的圆形区域。

接下来 10 行,每行输入两个整数 x_i,y_i-10^5≤ x_i,y_i≤ 10^5),代表收获季节调查的 10 株玉米的坐标。

输出格式

输出一个数字(保留 2 位小数),代表调查的这 10 株玉米品质的平均数。

样例 #1

样例输入 #1

23 4 5-1 0 1-1 00 01 02 03 0-1 -10 -11 -12 -13 -1

样例输出 #1

1.40

提示

判断点 (x_1,y_1) 与圆 (x_0,y_0,r_0) 的方法是:

计算点 (x_1,y_1) 到圆心 (x_0,y_0) 的距离的平方 d^2=(x_1-x_0)^2+(y_1-y_0)^2,将这个值与圆的半径的平方 r_0^2 作比较:- 如果 d^2<r_0^2,说明点在圆内;- 如果 d^2=r_0^2,说明点在圆上;- 如果 d^2>r_0^2,说明点在圆外。

写一个C++代码,用上const内容:C++ 代码c++#include #include using namespace std;

int main() { int m; cin >> m;

// 存储浇水区域信息 const int MAXN = 1e5 + 5; int x[MAXN], y[MAXN], r[MAXN]; for (int i = 0; i < m; i++) { cin >> x[i] >> y[i] >> r[i]; }

// 存储玉米坐标信息 int cx[10], cy[10]; for (int i = 0; i < 10; i++) { cin >> cx[i] >> cy[i]; }

// 初始化玉米品质 int quality[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

// 计算玉米品质 for (int i = 0; i < m; i++) { for (int j = 0; j < 10; j++) { // 计算距离的平方 int dist2 = (cx[j] - x[i]) * (cx[j] - x[i]) + (cy[j] - y[i]) * (cy[j] - y[i]); // 判断点是否在圆内 if (dist2 < r[i] * r[i]) { quality[j]++; } } }

// 计算品质平均数 double sum = 0; for (int i = 0; i < 10; i++) { sum += quality[i]; } double avg = sum / 10;

// 输出结果 cout << fixed << setprecision(2) << avg << endl; return 0;

玉米田浇水问题 - 计算玉米品质平均数

原文地址: https://www.cveoy.top/t/topic/jCWY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录