博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4007 Dave【离散化+扫描线】
阅读量:6341 次
发布时间:2019-06-22

本文共 2190 字,大约阅读时间需要 7 分钟。

题意: 知道了 n 个人的坐标和一个边长为R的正方形,问正方形内最多可以包含多少人。

分析:离散化坐标,将y坐标映射到区间上,按x坐标从小到达扫描。

#include 
#include
#include
using namespace std;#define maxn 10005long long max(long long a, long long b){ return a>b?a:b;}struct seg{ long long x, y, val;}s[maxn*2];int add[maxn<<3];int val[maxn<<3];long long Y[maxn*2];bool cmp(seg a, seg b){ if(a.x != b.x) return a.x < b.x; return a.val < b.val;}void update(long long L, long long R, long long va, long long l, long long r, long long rt){ if (L <= l && r <= R) { add[rt] += va; val[rt] += va; return; } if (add[rt]) { add[rt<<1] += add[rt]; add[rt<<1|1] += add[rt]; val[rt<<1] += add[rt]; val[rt<<1|1] += add[rt]; add[rt] = 0; } long long m = (l + r)>>1; if (L <= m) update(L, R, va, l, m, rt<<1); if (R > m) update(L, R, va, m+1, r, rt<<1|1); val[rt] = max(val[rt<<1], val[rt<<1|1]);}long long b_search(long long key, long long n){ long long m, l = 1, r = n; while (l <= r) { m = (l+r)>>1; if (Y[m] == key) return m; else if (Y[m] > key) r = m-1; else l = m+1; } return -1;}int main(){ long long i, m, l, r, res; long long n, R; while (scanf("%I64d %I64d",&n, &R) != EOF) { for (i=1; i<=n; i++) { scanf("%I64d %I64d",&s[i].x, &s[i].y); s[i].val = 1; s[i+n] = s[i]; s[i+n].x = s[i].x + R +1; s[i+n].val = -1; Y[i] = s[i].y; Y[i+n] = s[i].y+R; } sort(Y+1, Y+2*n+1); sort(s+1, s+2*n+1, cmp); m = 1; for (i=1; i<=2*n; i++) if (Y[i] != Y[m]) Y[++m] = Y[i]; memset(add, 0, sizeof(add)); memset(val,0,sizeof(val)); res = 0; for (i=1; i<=2*n; i++) { l = b_search(s[i].y, m); r = b_search(s[i].y+R, m); update(l, r, s[i].val, 1, m, 1); res = max(res,val[1]); } printf("%I64d\n",res); } return 0;}

 

转载于:https://www.cnblogs.com/dream-wind/archive/2012/11/03/2752414.html

你可能感兴趣的文章
进行短视频app开发工作时,可以加入它来保护青少年 ...
查看>>
25G DAC无源高速线缆和25G光模块之间的区别
查看>>
乐乐茶完成近2亿元Pre-A轮融资,祥峰投资领投
查看>>
clickhouse修改时区
查看>>
CSS_定位
查看>>
第二十四章:页面导航(六)
查看>>
10 个 Linux 中方便的 Bash 别名
查看>>
全新 DOCKER PALS 计划上线,带给您不一样的参会体验! ...
查看>>
Android开发之自定义View(二)
查看>>
python爬虫之微打赏(scrapy版)
查看>>
自制操作系统Antz day08——实现内核 (中) 扩展内核
查看>>
poj-1056-IMMEDIATE DECODABILITY(字典)
查看>>
区块链应用 | 不知道什么时候起,满世界都在谈区块链的事情
查看>>
小程序爆红 专家:对简单APP是巨大打击
查看>>
FarBox--另类有趣的网站服务【转】
查看>>
在非纯色背景上,叠加背景透明的BUTTON和STATIC_TEXT控件
查看>>
Distributed2:Linked Server Login 添加和删除
查看>>
Java中取两位小数
查看>>
使用 ftrace 调试 Linux 内核【转】
查看>>
唯一聚集索引上的唯一和非唯一非聚集索引
查看>>