题意:移动一个矩形,使矩形内包含的点尽量多。

思路:把一个点拆成两个事件,一个进(权值为1)一个出(权值为-1),将所有点按照x排序,然后扫描,对于每个x,用一个滑窗计算一下最大值,再移动扫描线。树状数组可以实现。

上面方法其实不是最优的,目前所知最优的办法是把一个矩形压缩成一个点,而一个点延伸为一条线,遇到点的时候更新y+h的一个区间。(线段树懒操作),然后询问线段树上点(矩形)的最值。必须用线段树,时间复杂度会低一些。

类似思路的题目Seoul2007 LA3905,Meteor流星

只写了树状数组版,鉴于扫描线需要进一步学习,待更。

当时做的时候就知道是线段树,可惜我并不会写扫描线,以前尝试写过,挂了,基础有待加强。

#include<cstdio>
#include<algorithm>
using namespace std; const int maxh = +;
const int maxn = +; int C[maxh];
#define lowbit(x) (x&(-x))
void add(int x,int v)
{
while(x <= ){
C[x] += v; x += lowbit(x);
}
} int sum(int x){
int res = ;
while(x>){
res += C[x]; x -= lowbit(x);
}
return res;
}
struct Point
{
int x,y;
bool operator < (const Point & rhs) const {
return x < rhs.x;
}
}poi[maxn]; int main()
{
//freopen("in.txt","r",stdin);
int N;
while(~scanf("%d",&N)&& N>){
int W,H;
scanf("%d%d",&W,&H);
for(int i = ; i < N; i++){
scanf("%d%d",&poi[i].x,&poi[i].y);
poi[i].y += ;
}
sort(poi,poi+N);
int L , R; L = R = ;
int ans = ;
while(R<N){
while(poi[R].x - poi[L].x <= W && R<N){
add(poi[R++].y,);
}
for(int i = ,sz = - H ; i <= sz ; i++){
ans = max(ans,sum(i+H)-sum(i-));
}
if(R<N)
while(poi[R].x - poi[L].x > W){
add(poi[L++].y,-);
}
}
printf("%d\n",ans);
while(L<N){
add(poi[L++].y,-);
}
}
return ;
}

最新文章

  1. 缓存和sd卡的路径(原)
  2. How can I determine the URL that a local Git repository was originally cloned from?
  3. 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  4. CSS Flex弹性布局
  5. Web开发者和设计师必须要知道的 iOS 8 十个变化
  6. TL-WR703 USB不稳定/当前的总结
  7. 一个简单的iBatis入门例子
  8. linux Ubuntu安装后没有引导 解决方案
  9. C/C++中new关键字是否加括号的区别
  10. linux网络编程之网络函数详解
  11. 承诺c指针 (1)指针是地址
  12. XCOM2中敌对生物设计分析(Aliens篇)
  13. HTML5可预览多图片ajax上传(使用formData传递数据)
  14. 【Python025-字典】
  15. MapReduce的工作机制
  16. Java并发编程:Java Thread 的 sleep() 和 wait() 的区别
  17. 在centos7上安装elasticSearch
  18. C++ template —— 动多态与静多态(六)
  19. 20145206邹京儒 web安全基础实践
  20. ng的概念层次(官方文档摘录)

热门文章

  1. .net过滤器重写beginrequest
  2. JavaScript 原型的实际应用之实现一个 jQuery
  3. 模板 - 动态规划 - 区间dp
  4. Robot Frame应用实例讲解
  5. Docker学习:virtualbox安装和配置
  6. python3 安装虚拟镜像
  7. Django模板语言,标签整理
  8. 长春理工大学第十四届程序设计竞赛(重现赛)L.Homework Stream
  9. tomcat jndi 数据源
  10. (转)useradd用户,组管理案例