对于每个点,扩成一个矩形,变成求最大重叠层数;

注意边界的处理,这里是横纵均加一;

可能在边界上会产生一些问题,在排序的时候修正;

#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<queue>
#include<cmath>
#include<math.h>
using namespace std;
#define inf 0x3f3f3f3f
const int dir[4][2]={0,1,0,-1,1,0,-1,0};
#define maxn 2005struct Tree
{int l,r;//左右端点int c;//覆盖情况int cnt,lf,rf;//cnt为层数,lf为实际左坐标,rf为实际右坐标
}tree[maxn*4];struct Line
{int x,y1,y2;int f;//直线的标记
}line[maxn];bool cmp(Line a,Line b)//sort排序的函数
{if(a.x!=b.x)return a.x < b.x;elsereturn a.f < b.f;
}  int y[maxn];//记录y坐标void build(int l,int r,int root)
{tree[root].l=l;tree[root].r=r;tree[root].c=tree[root].cnt=0;tree[root].lf=y[l];tree[root].rf=y[r];if(l+1==r)return;int mid=(l+r)>>1;build(l,mid,root<<1);build(mid,r,root<<1|1);
}void calen(int root)
{if(tree[root].l+1==tree[root].r) tree[root].cnt=tree[root].c;else tree[root].cnt=max(tree[root<<1].cnt,tree[root<<1|1].cnt)+tree[root].c;
}void update(int root,struct Line e)
{if(e.y1==tree[root].lf&&e.y2==tree[root].rf){tree[root].c+=e.f;calen(root);return;}if(e.y2<=tree[root<<1].rf)update(root<<1,e);else if(e.y1>=tree[root<<1|1].lf)update(root<<1|1,e);else{Line tmp=e;tmp.y2=tree[root<<1].rf;update(root<<1,tmp);tmp=e;tmp.y1=tree[root<<1|1].lf;update(root<<1|1,tmp);}calen(root);
}int main()
{int i,j;int n,r,k;int x1,y1,x2,y2;while(scanf("%d%d",&n,&r)!=EOF){k=1;for(i=1;i<=n;i++){scanf("%d%d",&x1,&y1);x2=x1+r+1;y2=y1+r+1;line[k].x=x1;line[k].y1=y1;line[k].y2=y2;line[k].f=1;y[k]=y1;k++;line[k].x=x2;line[k].y1=y1;line[k].y2=y2;line[k].f=-1;y[k]=y2;k++;}k--;sort(line+1,line+k+1,cmp);sort(y+1,y+k+1);int mm;mm=unique(y+1,y+1+k)-y-1;build(1,mm,1);int ans=0;for(i=1;i<=k;i++){update(1,line[i]);if(tree[1].cnt>ans)ans=tree[1].cnt;}printf("%d\n",ans);}return 0;
}

hdu 4007 Dave 求矩形圈点最大值相关推荐

  1. Picture HDU - 1828 (扫描线求矩形周长并)

    题目连接:https://cn.vjudge.net/problem/HDU-1828 题意:给你n个矩形,让你求矩形的轮廓的周长之和 两遍扫描线从左到右,从下到上即可. #include <i ...

  2. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)

    链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...

  3. hdu 1255 覆盖的面积 (扫描线求矩形交)

    覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  4. 线段树扫描线求矩形周长详解

    线段树扫描线求矩形周长详解 原创 wucstdio 最后发布于2018-04-24 16:12:09 阅读数 841 收藏 发布于2018-04-24 16:12:09 版权声明:本文为博主原创文章, ...

  5. [YTU]_2642 (填空题:类模板---求数组的最大值)

    Description 类模板---求数组的最大值 找出一个数组中的元素的最大值,数组大小为10.(用类模板来实现) 数组元素类型作为类模板的参数. 在下面的程序段基础上完成设计,只提交begin到e ...

  6. 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值

    编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值 目录 题目描述 代码实现 题目描述 序列重排:给一个长度为n的序列A,求找出 ...

  7. 常用的函数式接口_Supplier接口练习_求数组元素最大值

    求数组元素最大值 题目 使用Supplier 接口作为方法参数类型,通过Lambda表达式求出int数组中的最大值.提示:接口的泛型请使用java.lang.Integer 类. 解答 package ...

  8. python 求最大值实例_Python 求数组局部最大值的实例

    求数组局部最大值 给定一个无重复元素的数组A[0-N-1],求找到一个该数组的局部最大值.规定:在数组边界外的值无穷小.即:A[0]>A[-1],A[N-1] >A[N]. 显然,遍历一遍 ...

  9. c语言数组最大可定义多少位_C语言求数组的最大值三种方法

    /* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);in ...

最新文章

  1. QEMU — Guest Agent
  2. CodeForcesGym 100753B Bounty Hunter II 二分图最小路径覆盖
  3. STM32开发 -- 外部中断详解
  4. 在html中引入css内部样式表使用,CSS样式学习笔记(三)html文件引入CSS的方法(2)...
  5. java集合set的使用_浅析Java中的set集合类型及其接口的用法
  6. arm-2014.05 编译三星内核错误 “not support ARM mode ‘smc 0’ ”
  7. 网关 Spring Cloud Gateway
  8. android切换线程的方法,android 主线程切换方法
  9. c语言int grade 5,C语言补考!!!
  10. python类 析构方法
  11. 安装Cnario提示.Net 3.5安装错误, 检查Windows系统更新提示无法检查到更新, 安装.Net 3.5提示Windows无法完成请求的更改, 错误代码:0x800F081F...
  12. 【图像标注】使用vue3实现图像标注功能
  13. 软件测试实例 面试经验
  14. 0ctf之simple
  15. Groovy - Groovy ambiguous method overload
  16. Vmware+Ubuntu18.04配置桥接模式,并解决虚机中网络慢的问题
  17. Python3.6实现图片转文字
  18. I2S、TDM详细介绍
  19. 数据库基本知识和命令
  20. 关于计算机的网络作文,关于网络作文

热门文章

  1. 实用的短视频推广软件 抖音短视频推广助手
  2. Selective Cross-City Transfer Learning for Traffic Prediction via Source City Region Re-Weighting笔记
  3. Python爬取去哪网旅游景点保存到csv文件
  4. 浅谈chr(239).chr(187).chr(191)的作用
  5. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...
  6. 核磁共振成像快速成像技术——杨正汉(5)
  7. 知道106短信平台发短信为什么必须带上签名吗?
  8. SQL SERVER 分组求和
  9. Pitaya框架应用和解构
  10. 基于NPOI用C#开发的Excel以及表格设置