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 ...
随机推荐
- MYSQL常用函数(控制流函数)
MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台. MySQL控制流函数: CASE WHEN[test1] THEN [r ...
- MySQL processlist/kill
1.show full processlist 显示MySQL所有正在执行的进程,用于查看当前的MySQL运行情况,避免死锁等导致的异常情况. 主要的列: Id:进程Id User:登录账号 Host ...
- c# DataTable 序列化json
if (ds.Tables[0].Rows.Count != 0) { var list = GetJsonString(ds ...
- RPG游戏中如何判断敌人是否在玩家的攻击范围之内
// 方式1:通过主角和场景中的所有敌人比较 private void AtkCondition1(float _range,float _angle) { // 搜索所有敌人列表(在动态创建敌人时生 ...
- Angular 学习笔记 (version 6 小笔记)
1. lazyload 的 path 变成相对路径了, 不过如果你用 ng update 的话, 依然可以不需要修改, cli config 好像能调支持绝对路径的写法. const routes: ...
- python中的面向对象学习之继承实例讲解
__author__ = "Yanfeixu" class School(object): # object是基类,所有的类都是继承这个--新式类 def __init__(sel ...
- app和bootloader跳转 MSP与PSP
1.不要把跳转函数放在中断中,如此导致在跳转后的app或者bootloder都是在中断状态,只要你一开启该中断,就可能出现硬件中断了 2.如果你的APP使用了ucos系统,在跳转函数中还需要增加__s ...
- 20171205xlVBA往返航班组合
'ClassPlan Public Org As String Public Des As String Public FlyNo As String Public StartDate As Vari ...
- Spring的几种注入bean的方式
在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入 这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的se ...
- 安卓——animotion
在 layout下建立文件夹 animator写入动画文件xml <?xml version="1.0" encoding="utf-8"?> &l ...