华强种瓜
描述:
华强买到了不保熟的瓜,他很生气,遂决定……
自己种瓜!
第二天,华强承包了一大片瓜田,他买来了
n
2
n^2
n2 个保熟的西瓜种子,并且严格按照一个 n×n 米间距的网格进行种植。为了方便华强记忆,这个网格的坐标从 1 开始编号,到 n 结束。
为了让瓜保熟,他又买来了 k 个洒水器,洒水器工作半径为 r 米,安装在在网格中的某些种子的正上方。
安装完这些洒水器后,华强很想知道现在他的瓜里面有多少能够被撒到水。
输入:
输入共包含 n+k 行。
第一行包含 3 个整数 n、k 和 r,分别表示网格边距、洒水器数量和洒水器工作半径,题目保证 1 ≤ n , k ≤ 200 1≤n,k≤200 1≤n,k≤200。
接下来 k 行,每行两个整数 x 和 y,表示每个洒水器在网格中的坐标 ( x , y ) (x,y) (x,y)。
输出:
一行一个整数,表示被洒水器覆盖到的西瓜总数。
样例输入:
5 2 1
3 3
4 2
样例输出:
8
注释:
对于第一组样例,
(
3
,
3
)
(3,3)
(3,3) 上的洒水器工作半径可以覆盖到
(
3
,
3
)
(
4
,
3
)
(
2
,
3
)
(
3
,
2
)
(
3
,
4
)
(3,3) (4,3) (2,3) (3,2) (3,4)
(3,3)(4,3)(2,3)(3,2)(3,4) 的瓜。而
(
4
,
2
)
(4,2)
(4,2) 上的洒水器可以覆盖到
(
4
,
2
)
(
5
,
2
)
(
3
,
2
)
(
4
,
1
)
(
4
,
3
)
(4,2)(5,2) (3,2) (4,1) (4,3)
(4,2)(5,2)(3,2)(4,1)(4,3) 的瓜。去重后,共有 8 个瓜被覆盖到。
C++代码实现
#include<iostream>
using namespace std;
int main(){
int n,k,r;
cin>>n>>k>>r;
int xigua[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
xigua[i][j]=0;
int x,y;
for(int i=0;i<k;i++){
cin>>x>>y;
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
int distance=(x-1-j)*(x-1-j)+(y-1-k)*(y-1-k);
if(distance<=r*r)
xigua[j][k]=1;
}
}
}
int result=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
result+=xigua[i][j];
cout<<result;
cout<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
cout<<xigua[i][j]<<" ";
cout<<endl;
}
}