题目描述

一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到。

输入输出格式

输入格式:

(1<=r<n<=5000)

(1<=m<=5000)

第一行3个整数n,m,r

接下来m行,每行两个整数x,y表示第i个探测器的坐标

输出格式:

能被探测到的点的个数

输入输出样例

输入样例#1: 复制

5 2 1
3 3
4 2

输出样例#1: 复制

8

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int an[5002][5002];
double longth (int r,int d)
{
return sqrt(r*r-d*d);
}
int main ()
{
int n,m,r,x,y,ln,rn,listr,listl;
int ans=0;
cin>>n>>m>>r;
for(int i=0;i<m;i++)
{
cin>>x>>y;
ln=max(x-r,1);//上边界
rn=min(x+r,n);//下边界
for(int j=ln;j<=rn;j++)//列数
{
listl=max(1,(int)ceil(y-longth(r,x-j)));//左边界//是将此坐标整体进行向下取整
listr=min(n,(int)floor(y+longth(r,x-j)));//右边界//同理
an[j][listl]+=1;//差分标记
an[j][listr+1]-=1;
}
}
for(int i=1;i<=n;i++)//前缀和后遍历取0(统计零解多次探照问题)//反向计数
for (int j = 1; j <= n; j++)
{
an[i][j] += an[i][j - 1];
if (an[i][j]==0)
ans++;
}
cout<<n*n-ans<<endl;
return 0;
}



最新文章

  1. ztreeDeptSelect 基于jquery和ztree的部门选择插件
  2. Nodejs学习总结
  3. 算法(第4版)-1.5 案例研究:union-find算法
  4. angularJs指令深度分析
  5. HTML前端--各种小案例
  6. 使用Jekyll搭建博客
  7. ASP.NET MVC 下 引用阿里巴巴和IconFont字体路径404问题
  8. pdb文件部分解释
  9. LBP特征提取实现
  10. Nginx fastcgi_param解释
  11. C# 面向对象 , 抽象基类
  12. 16个值得个人站长做的广告联盟[转自cnzz]
  13. ajaxFileUpload+struts2实现多文件上传
  14. 正则表达式去除字符串左右空格函数 调用方法是,str.Trim();
  15. bzoj 4539: [Hnoi2016]树
  16. [BZOJ2733] [HNOI2012] 永无乡 (splay启发式合并)
  17. kubernetes学习笔记之十:RBAC
  18. [SQLSERVER] 转移数据库MDF或LDF文件位置的方法,以及重新启动出现无权限的问题
  19. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求(转)
  20. python 查找函数的用法

热门文章

  1. 【JavaWeb】JSTL 标签库
  2. 【Flutter】功能型组件之异步UI更新
  3. 天梯赛练习 L3-010 是否完全二叉搜索树 (30分) 数组建树模拟
  4. puppetlabs地址
  5. 【VNC】vnc远程连接的时候无法显示图像已解决
  6. ASP Net Core &ndash; CORS 预检请求
  7. Android N selectQualifiedNetwork分析
  8. 一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细
  9. oracle创建表并加索引
  10. git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学