bzoj1935
题解:
x升序排序
y离散化+树状数组
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,tot,que,disc[N*],x[N],y[N],a[N],b[N],c[N],d[N],t[*N],ans[N][];
struct data{int x,y,id,f;}q[*N];
int operator<(data a,data b)
{
return a.x<b.x||(a.x==b.x&&a.f<b.f);
}
void add(int x,int y)
{
for (int i=x;i<=tot;i+=i&-i)t[i]+=y;
}
int query(int x)
{
int sum=;
for (int i=x;i;i-=i&-i)sum+=t[i];
return sum;
}
int find(int x)
{
int l=,r=tot;
while (l<=r)
{
int mid=(l+r)>>;
if (disc[mid]==x)return mid;
else if(disc[mid]<x)l=mid+;
else r=mid-;
}
}
void solve()
{
sort(q+,q+que+);
for (int i=;i<=que;i++)
{
if (!q[i].f)add(q[i].y,);
else
{
int t=query(q[i].y);
ans[q[i].id][q[i].f]=t;
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
{
scanf("%d%d",&x[i],&y[i]);
disc[++tot]=y[i];
}
for (int i=;i<=m;i++)
{
scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
disc[++tot]=b[i];disc[++tot]=d[i];
}
sort(disc,disc+tot+);
for (int i=;i<=n;i++)
{
y[i]=find(y[i]);
q[++que].x=x[i];q[que].y=y[i];
}
for (int i=;i<=m;i++)
{
b[i]=find(b[i]);d[i]=find(d[i]);
q[++que].x=c[i];q[que].y=d[i];q[que].id=i;q[que].f=;
q[++que].x=a[i]-;q[que].y=d[i];q[que].id=i;q[que].f=;
q[++que].x=c[i];q[que].y=b[i]-;q[que].id=i;q[que].f=;
q[++que].x=a[i]-;q[que].y=b[i]-;q[que].id=i;q[que].f=;
}
solve();
for (int i=;i<=m;i++)
{
int t=ans[i][]+ans[i][]-ans[i][]-ans[i][];
printf("%d\n",t);
}
return ;
}
bzoj1935的更多相关文章
- 【BZOJ1935/4822】[Shoi2007]Tree 园丁的烦恼/[Cqoi2017]老C的任务 树状数组
题意:两道题差不多,都是给你一堆平面上的点,每个点有权值,然后m次询问求某一矩形区域内的点权和 题解:先离散化,然后将询问拆成左右两条线段,然后将点和这些线段一起按x坐标排序,在y轴上维护树状数组.然 ...
- 【bzoj4822/bzoj1935】[Cqoi2017]老C的任务/[Shoi2007]Tree 园丁的烦恼 树状数组
原文地址:http://www.cnblogs.com/GXZlegend/p/6825530.html bzoj4822 题目描述 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务 ...
- [bzoj1935][Shoi2007]Tree 园丁的烦恼 _树状数组
Tree 园丁的烦恼 bzoj-1935 Shoi-2007 题目大意:给定平面上的$n$个点,$m$次查询矩形点个数. 注释:$1\le n,m\le 5\cdot 10^5$. 想法:静态二维数点 ...
- bzoj1935 [Shoi2007]园丁的烦恼
bzoj1935 [Shoi2007]园丁的烦恼 有N个点坐标为(xi,yi),M次询问,询问(a,b)-(c,d)的矩形内有多少点. 0≤n≤500000,1≤m≤500000,0≤xi,yi≤10 ...
- [bzoj1935][shoi2007]Tree 园丁的烦恼(树状数组+离线)
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 980 Solved: 450[Submit][ ...
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 552 Solved: 220[Submit][ ...
- [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼
来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...
- BZOJ1935:[SHOI2007]Tree 园丁的烦恼(CDQ分治)
Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个园丁道: ...
- BZOJ1935或洛谷2163 [SHOI2007]园丁的烦恼
BZOJ原题链接 洛谷原题链接 很容易想到二维前缀和. 设\(S[i][j]\)表示矩阵\((0, 0)(i, j)\)内树木的棵数,则询问的矩形为\((x, y)(xx, yy)\)时,答案为\(S ...
随机推荐
- zlib交叉编译
下载 zlib-1.2.9.tar.gz wget http://www.zlib.net/fossils/zlib-1.2.9.tar.gz 解压文件 tar -zxvf zlib-1.2.9.ta ...
- Codeforces 1043 F - Make It One
F - Make It One 思路: dp + 容斥 首先, 答案不会超过7, 因为前7个质数的乘积大于3e5(最坏的情况是7个数, 每个数都缺少一个不同的因子) 所以从1到7依次考虑 dp[i][ ...
- 启动node程序报错:event.js:183 throw er; // unhandled 'error' event
启动node程序时,报如下错误:
- 常用标签(html+jstl+jsp)
html:(form.input) (table.tr.td) div (a. img.span) h1~h6 (select.option) (br.hr.center) (link.meta ...
- python全栈开发,Day1(python介绍,变量,if,while)
python基础一 一,Python介绍 python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为 ...
- Spring Batch 批量处理策略
为了帮助设计和实现批量处理系统,基本的批量应用是通过块和模式来构建的,同时也应该能够为程序开发人员和设计人员提供结构的样例和基础的批量处理程序. 当你开始设计一个批量作业任务的时候,商业逻辑应该被拆分 ...
- Linux系统中文件定位与查找
Linux系统中文件查找 关键词 文件查找 | find | locate 本文主要介绍有关文件查找的两个命令——find和locate,以及压缩打包的命令——compress, gzip,bzip2 ...
- numpy学习:数据预处理
待处理的数据:150*150的灰度图片,除分析目标外,背景已经抹0 需要实现的目标:背景数字0不变,对其余数字做一个归一化处理 对list处理可以用 a=list(set(a)) # 实现了去除重复元 ...
- spring boot 创建web项目并使用jsp作前台页面
参考链接:https://www.cnblogs.com/sxdcgaq8080/p/7712874.html
- fdisk分区和挂载
查看硬盘情况 fdisk -l 修改分区类型为LVM sudo fdisk /dev/sda (/dev/sda为对应的设备名,也可能是其它名字) 按n新建分区 按p选择主分区 按t改变分区的syst ...