1. 程式人生 > >Luogu P3717 [AHOI2017初中組]cover

Luogu P3717 [AHOI2017初中組]cover

時空復雜度 接下來 pascal adl bool 探測器 begin 思路 true

題目背景

以下為不影響題意的簡化版題目。

題目描述

一個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

Solution

水題……

既然是水題,也就沒有多考慮就做了,可能時空復雜度不是最低的,但也不想管那麽多了。(誰叫它數據範圍那麽小)

我的思路,直接讀一個坐標就枚舉網格圖,有被探測器覆蓋的點(不重復)就計數加1

————————分割不完全的分割線————————

以下是pascal代碼:

var n,m,i,j,k,l,r,x,y:longint;
b:array[1..100,1..100]of boolean;
begin
  readln(n,m,r);
  for k:=1 to m do
  begin
    readln(x,y);//讀入坐標
    for i:=1 to n do
    for j:=1 to n do//枚舉每個點
    if (abs(i-x)*abs(i-x)+abs(j-y)*abs(j-y)<=r*r)and(not b[i,j]) then//看那個點與探測器的距離是否在探測範圍之內(且不重復)
    
begin b[i,j]:=true; inc(l);//計數加一 end; end; writeln(l); end.

Luogu P3717 [AHOI2017初中組]cover