题目背景
以下为不影响题意的简化版题目。
题目描述
一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到。
输入输出格式
输入格式:
第一行3个整数n,m,r
接下来m行,每行两个整数x,y表示第i个探测器的坐标
输出格式:
能被探测到的点的个数
输入输出样例
输入样例#1:
5 2 1 3 3 4 2
输出样例#1:
8
说明
1<=n,m<=100
太水了,不用差分就过了。
#include<iostream> #include<cstdio> #include<string.h> #include<algorithm> #include<math.h> #include<cmath> using namespace std; int n,m,r,ans; int x[120],y[120]; int main() { scanf("%d%d%d",&n,&m,&r); for(int i=1;i<=m;i++) scanf("%d%d",&x[i],&y[i]); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=m;k++) { if(((x[k]-i)*(x[k]-i)+(y[k]-j)*(y[k]-j))<=r*r) { ans++; break; } } cout<<ans; return 0; }
时间: 2024-09-29 22:35:39