题意

题目链接

Sol

二维数点板子题

首先把询问拆成四个矩形

然后离散化+树状数组统计就可以了

// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int MAXN = 4e6 + 10;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N, M, x[MAXN], y[MAXN], a[MAXN], b[MAXN], c[MAXN], d[MAXN], dx[MAXN], dy[MAXN], nx, ny, cnt, ans[MAXN];
struct Node {
int y, opt, id;
bool operator < (const Node &rhs) const {
return y < rhs.y;
}
};
vector<Node> q[MAXN];
vector<int> v[MAXN];
void des(int *d, int &num) {
sort(d + 1, d + num + 1);
num = unique(d + 1, d + num + 1) - d - 1;
}
int find(int *d, int num, int val) {
return lower_bound(d + 1, d + num + 1, val) - d;
}
struct BIT {
#define lb(x) (x & (-x))
int T[MAXN];
void Add(int x, int v) {
for(; x <= ny; x += lb(x))
T[x] += v;
}
int Query(int x) {
int ans = 0;
while(x) ans += T[x], x -= lb(x);
return ans;
}
#undef lb
}T;
void solve() {
for(int i = 0; i <= nx; i++) {
for(int j = 0; j < v[i].size(); j++)
T.Add(v[i][j], 1);
for(int j = 0; j < q[i].size(); j++) {
ans[q[i][j].id] += q[i][j].opt * T.Query(q[i][j].y);
}
}
} signed main() {
N = read(); M = read();
for(int i = 1; i <= N; i++) x[i] = dx[++nx] = read(), y[i] = dy[++ny] = read();
for(int i = 1; i <= M; i++) {
a[i] = dx[++nx] = read(), b[i] = dy[++ny] = read(), c[i] = dx[++nx] = read(), d[i] = dy[++ny] = read();
//dx[++nx] = a[i] - 1; dy[++ny] = b[i] - 1; dx[++nx] = c[i] - 1; dy[++ny] = d[i] - 1;
}
des(dx, nx);
des(dy, ny);
for(int i = 1; i <= N; i++) {
x[i] = find(dx, nx, x[i]);
y[i] = find(dy, ny, y[i]);
v[x[i]].push_back(y[i]);
}
for(int i = 1; i <= M; i++) {
a[i] = find(dx, nx, a[i]); b[i] = find(dy, ny, b[i]); c[i] = find(dx, nx, c[i]); d[i] = find(dy, ny, d[i]);
q[c[i]].push_back((Node) {d[i], 1, i});
q[a[i] - 1].push_back((Node) {d[i], -1, i});
q[c[i]].push_back((Node) {b[i] - 1, -1, i});
q[a[i] - 1].push_back((Node) {b[i] - 1, 1, i});
}
solve();
for(int i = 1; i <= M; i++) printf("%d\n", ans[i]);
return 0;
}
/*
6 2
2 2
3 2
3 3
3 4
4 3
5 4
3 1 5 3
1 1 3 5 3
*/

BZOJ1935: [Shoi2007]Tree 园丁的烦恼(树状数组 二维数点)的更多相关文章

  1. [bzoj1935][shoi2007]Tree 园丁的烦恼(树状数组+离线)

    1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec  Memory Limit: 357 MBSubmit: 980  Solved: 450[Submit][ ...

  2. 【bzoj4822/bzoj1935】[Cqoi2017]老C的任务/[Shoi2007]Tree 园丁的烦恼 树状数组

    原文地址:http://www.cnblogs.com/GXZlegend/p/6825530.html bzoj4822 题目描述 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务 ...

  3. BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 [树状数组 离线 离散化]

    传送门 刚才我还在郁闷网上怎么没人用$CDQ$分治做 突然发现根本没有时间序.... #include<iostream> #include<cstdio> #include& ...

  4. BZOJ 1935 Tree 园丁的烦恼 (树状数组)

    题意:中文题. 析:按x排序,然后用树状数组维护 y 即可. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000" ...

  5. BZOJ4822[Cqoi2017]老C的任务——树状数组(二维数点)

    题目描述 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松 地完成了系统的大部分功能,并把其中一个功能交给你来实 ...

  6. BZOJ1935: [Shoi2007]Tree 园丁的烦恼

    1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec  Memory Limit: 357 MBSubmit: 552  Solved: 220[Submit][ ...

  7. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  8. [bzoj1935][Shoi2007]Tree 园丁的烦恼 _树状数组

    Tree 园丁的烦恼 bzoj-1935 Shoi-2007 题目大意:给定平面上的$n$个点,$m$次查询矩形点个数. 注释:$1\le n,m\le 5\cdot 10^5$. 想法:静态二维数点 ...

  9. [BZOJ1935][SHOI2007]Tree 园丁的烦恼(树状数组)

    题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思 ...

随机推荐

  1. Tomcat几种出错方法

    1.  Several ports (8005, 8089, 8009) required by Tomcat v8.0 Server at localhost are already in use. ...

  2. jdbc连接2(不可以注入)

    public void login1(String username, String password) throws ClassNotFoundException, SQLException { / ...

  3. IQKeyboardManager 问题锦集

    Keep UINavigationBar at the top (Don't scroll with keyboard) (#21, #24) If you don't want to hide th ...

  4. JS实现一个基于对象的链表

    JS实现一个基于对象的链表 /*JS实现一个基于对象的链表*/ function Node(element){ this.element = element;//节点存储的元素 this.next = ...

  5. ajax实现快递单号查询

    效果:(代码写的有点乱,自行修改就可以了) 源码: index.php <!DOCTYPE html> <html lang="en"> <head& ...

  6. Oracle sys或者system的默认密码

    Oracle的sys和system默认密码   system默认:manager sys默认:change_on_install 使用SQL Plus登录数据库时,system使用密码manager可 ...

  7. Java之集合(十二)TreeMap

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7411935.html 1.前言 本章介绍Map体系中的TreeMap,顾名思义,这个是一个树结构的Map.Tre ...

  8. Windows10下简单搭建zookeeper

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6798669.html 1 简介 zookeeper是Apache的一个开源项目,致力于开发和维护一个开源的服务器 ...

  9. PreparedStatement插入values

    public interface PreparedStatementextends Statement 表示预编译的 SQL 语句的对象. SQL 语句被预编译并存储在 PreparedStateme ...

  10. python独立环境——virtualenv

    安装: pip3 intall virtualenv   创建独立运行环境: 1. 进入项目文件夹根目录 2. 创建环境 Mac:myproject michael$ virtualenv --no- ...