博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj1716简单的二维树状数组
阅读量:4332 次
发布时间:2019-06-07

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

问一个矩形框在一个大矩形内最多能围几个给定的点

都不用排序,先把所有的点加入树状数组,再直接枚举大矩形的每个格子即可

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define lson 2*i#define rson 2*i+1#define LS l,mid,lson#define RS mid+1,r,rson#define UP(i,x,y) for(i=x;i<=y;i++)#define DOWN(i,x,y) for(i=x;i>=y;i--)#define MEM(a,x) memset(a,x,sizeof(a))#define W(a) while(a)#define gcd(a,b) __gcd(a,b)#define LL long long#define N 1005#define INF 0x3f3f3f3f#define EXP 1e-8#define lowbit(x) (x&-x)const int mod = 1e9+7; int c[N][N],n,m,cnt,s,t; int sum(int x,int y){ int ret = 0; int i,j; for(i = x;i>=1;i-=lowbit(i)) { for(j = y;j>=1;j-=lowbit(j)) { ret+=c[i][j]; } } return ret;} void add(int x,int y,int d){ int i,j; for(i = x;i<=n;i+=lowbit(i)) { for(j = y;j<=m;j+=lowbit(j)) { c[i][j]+=d; } }} int main(){ int i,j,x,y,ans; while(~scanf("%d",&cnt),cnt) { ans = 0; scanf("%d%d",&n,&m); MEM(c,0); for(i = 1;i<=cnt;i++) { scanf("%d%d",&x,&y); add(x,y,1); } scanf("%d%d",&s,&t); for(i = 1;i<=n;i++) { for(j = 1;j<=m;j++) { int x1 = i,y1 = j,x2 = x1+s-1,y2 = y1+t-1; if(x2>n || y2>m) continue; int s = sum(x2,y2)+sum(x1-1,y1-1)-sum(x2,y1-1)-sum(x1-1,y2); ans = max(ans,s); } } printf("%d\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/zsben991126/p/10083637.html

你可能感兴趣的文章
vi 如何调到某一行
查看>>
2014工作感想
查看>>
用户模式构造-易变构造
查看>>
织梦入门2-采集1
查看>>
SPC软控件提供商NWA的产品在各行业的应用(化工行业)
查看>>
sparkSQL 简介
查看>>
POJ 3150 循环矩阵的应用
查看>>
基于脚本的nodemanager管理器
查看>>
【Android】百度地图自定义弹出窗口
查看>>
从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期...
查看>>
Windows Phone开发(7):当好总舵主
查看>>
string::size_type类型
查看>>
【NOIP2018】为什么这么无力啊
查看>>
jquery.validate 笔记
查看>>
2017.6.4 入门组 NO.3——字符串
查看>>
inux系统监控
查看>>
性能测试第一天
查看>>
Mysql中代替like模糊查询的一种方法
查看>>
Struts2拦截器(Interceptor)(上)
查看>>
JVM调优-Java中的对象
查看>>