題目來(lái)源: P3717 [AHOI2017初中組]cover - 洛谷
時(shí)空限制1000ms / 128MB
題目描述
一個(gè)n*n的網(wǎng)格圖上有m個(gè)探測(cè)器瞬女,每個(gè)探測(cè)器有個(gè)探測(cè)半徑r摊唇,問(wèn)這n*n個(gè)點(diǎn)中有多少個(gè)點(diǎn)能被探測(cè)到。
輸入輸出格式
輸入格式:
第一行3個(gè)整數(shù)n,m,r
接下來(lái)m行授帕,每行兩個(gè)整數(shù)x,y表示第i個(gè)探測(cè)器的坐標(biāo)
輸出格式:
能被探測(cè)到的點(diǎn)的個(gè)數(shù)
樣例輸入:
5 2 1
3 3
4 2
樣例輸出:
8
這道題是一個(gè)很可愛(ài)的題目。為什么這樣說(shuō)呢浮梢?因?yàn)樗玫娇蓯?ài)的兩點(diǎn)之間距離公式也就是被數(shù)學(xué)老師常年逼迫所背過(guò)的x1-x2的平方加上y1-y2的平方的平方根跛十。
注意的是三層循環(huán)先循環(huán)探測(cè)器的坐標(biāo)
#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;
}