Luogu P3717 [AHOI2017初中组]cover

题目背景

以下为不影响题意的简化版题目。

题目描述

一个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.
时间: 2024-10-08 11:57:54

Luogu P3717 [AHOI2017初中组]cover的相关文章

P3717 [AHOI2017初中组]cover

题目背景 以下为不影响题意的简化版题目. 题目描述 一个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<

[AHOI2017初中组]guide

[AHOI2017初中组]guide 最短路 题意 对于一张有向图,每条边有两个边权,有两套GPS会分别按两个边权计算所在到终点的最短路,如果你不按其中一套GPS说的路走,就会产生1的抱怨,求从起点到终点的最少抱怨数 题解 因为每次两套GPS都会判断当前要去的点是否在当前点到终点的最短路上,所以我们可以反向建边,跑出每套GPS从终点到每个点的最短路,然后我们重新建图,依次枚举原图的每条边,将边权赋值为2,如果要去的点在某套GPS的最短路上,边权减一.最后跑一遍最短路就可以得出\(ans\) 反向

P3719 [AHOI2017初中组]rexp——递归模拟

P3719 [AHOI2017初中组]rexp 没有什么算法的题做起来真不适应,这道题深深讽刺了我想用栈维护匹配括号个数的想法: 递归解决就行了: 时刻注意函数返回值是什么,边界条件是什么: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1e5+10; typedef double dd; typedef long long ll; l

luogu3720 [AHOI2017初中组]guide[最短路]

初中组..唉 题意有点误解,当前在x点走一步,gps产生代价条件是沿非x到n的最短路走. 直接倒着跑两遍$i\sim n$的两种最短路,然后枚举每条边走的时候是否可以在两种最短路上,不是就产生1个代价,然后以这个代价重新建图正着跑一遍最短路即可. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6

P3720 [AHOI2017初中组]guide

题目描述 农场主John最近在网上买了一辆新车,在购买汽车配件时,John不小心点了两次“提交”按钮.导致汽车上安装了两套GPS系统,更糟糕的是John在使用GPS导航时,两套系统常常给出不同的路线.从地图上看,John居住的地区有N(2 ≤ N ≤ 100,000)个十字路口和M(1 ≤ M ≤ 500,000)条限定通行方向的道路.第i条道路连接路口 A_i (1 ≤ A_i ≤ N)和B_i (1 ≤ B_i ≤ N),两个路口之间可能连接有多条道路.允许双向通?的道路是将两条单向通?的道

luogu cover

P3717 [AHOI2017初中组]cover 题目背景 以下为不影响题意的简化版题目. 题目描述 一个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>

[Luogu] LCA

https://www.luogu.org/problemnew/show/P4211 baoli #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int N = 5e4 + 10; const int Mod = 201314; #define gc getchar() #define RR fr

luogu P3799 妖梦拼木棒

二次联通门 : luogu P3799 妖梦拼木棒 /* luogu P3799 妖梦拼木棒 用一个桶存下所有的木棒 美剧两根短的木棒长度 后随便乘一乘就 好了.. */ #include <algorithm> #include <cstdio> #define Mod 1000000007 #define Max 5000 void read (int &now) { now = 0; register char word = getchar (); while (wo

[luogu P1967][NOIp2013]P1967 货车运输

题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 输入输出格式 输入格式: 输入文件名为 truck.in. 输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道 路. 接下来 m 行每行 3 个整数 x. y. z,每两个整数之间用一个空格隔开,表示从 x 号城市到 y 号城市有一条限重为 z