信号覆盖 蓝桥杯模拟

信号覆盖(暴力模拟)
❓️ 问题描述
小蓝负责一块区域的信号塔安装,整块区域是一个长方形区域,建立坐标轴后,西南角坐标为 (0, 0)
东南角坐标为 (W, 0) , 西北角坐标为 (0, H) , 东北角坐标为 (W, H) 。其中 W, H 都是整数。
他在 n 个位置设置了信号塔,每个信号塔可以覆盖以自己为圆心,半径为 R 的圆形(包括边缘)。
为了对信号覆盖的情况进行检查,小蓝打算在区域内的所有横纵坐标为整数的点进行测试,检查信号状
态。其中横坐标范围为 0 W ,纵坐标范围为 0 H ,总共测试 (W+1) * (H+1) 个点。
给定信号塔的位置,请问这 (W+1)*(H+1) 个点中有多少个点被信号覆盖。
输入格式
输入第一行包含四个整数 W, H, n, R ,相邻整数之间使用一个空格分隔。 接下来 n 行,每行包含两个整
x, y ,表示一个信号塔的坐标。信号塔可能重合,表示两个信号发射器装在了同一个位置。
输出格式
输出一行包含一个整数,表示答案。
样例输入
10 10 2 5
0 0
7 0
样例输出
57
W,H,n,R = map(int,input().split())

def juli(x1,y1,x2,y2):#计算两点之间距离
  return((x1-x2)**2 + (y1-y2)**2)**0.5

vis = [[0]*(H+1) for i in range(W+1)]#记录标记过的点

ans = 0

for k in range(n):
  x,y=map(int,input().split())
  for i in range(x-R,x+R+1):
    for j in range(y-R,y+R+1):
      if 0<=i<=W and 0<=j<=H and vis[i][j]==0 and juli(i,j,x,y)<=R:#距离信号塔R以内 且在坐标中 未标记过的点
        vis[i][j]=1#标记
        ans+=1
print(ans)
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小梁今天敲代码了吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值