题目来源: P3717 [AHOI2017初中组]cover - 洛谷
时空限制1000ms / 128MB
题目描述
一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到。
输入输出格式
输入格式:
第一行3个整数n,m,r
接下来m行,每行两个整数x,y表示第i个探测器的坐标
输出格式:
能被探测到的点的个数
样例输入:
5 2 1
3 3
4 2
样例输出:
8
这道题是一个很可爱的题目。为什么这样说呢?因为他要用到可爱的两点之间距离公式也就是被数学老师常年逼迫所背过的x1-x2的平方加上y1-y2的平方的平方根。
注意的是三层循环先循环探测器的坐标
#include
#include
#include
#include
#include
using namespacestd;
char a[110][110];
intx[1000],y[1000];
int i,j;
int main() {
int n,m,num=0;
double r;
cin>>n>>m>>r;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
a[i][j]='0';
for(i=1; i<=m; i++) {
cin>>x[i]>>y[i];
a[x[i]][y[i]]='1';//tanceqi
}
for(int k=1; k<=m; k++) {
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
doubletot=sqrt((x[k]-i)*(x[k]-i)+(y[k]-j)*(y[k]-j));
if(tot<=r) a[i][j]='2';
}
}
}
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
if(a[i][j]=='2') {
num++;
}
}
}
cout<
return 0;
}