链接

bzoj

最好不要去luogu,数据太水

思路

一个询问转化成四个矩阵,求起点\((0,0)到(x,y)\)的矩阵

离线处理,离散化掉y,x不用离散。

一行一行的求,每次处理完一行之后下一行的贡献直接叠加到当前。

用lowbit统计

错误

离散化小心点,是y-1不是y

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7, maxn = 5e5 + 1;
int read() {
int x = 0, f = 1; char s = getchar();
for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
return x * f;
} int n, m, ans[N], x[N], y[N], X[N], Y[N];
pair<int, int> tree[N];
struct ask {
int id, q, x, y;
ask(int a = 0, int b = 0, int c = 0, int d = 0) {
id = a, q = b, x = c, y = d;
if (!x || !y) x = 0, y = 0;
}
bool operator < (const ask &b) const {
return x < b.x;
}
} Q[N<<2]; namespace BIT {
int sum[N];
inline int lowbit(int x) {
return x & -x;
}
void add(int x) {
for (int i = x; i <= maxn; i += lowbit(i))
sum[i]++;
}
int query(int x) {
int ans = 0;
for (int i = x; i >= 1; i -= lowbit(i))
ans += sum[i];
return ans;
}
}
int lsh[N<<3],len; int main() {
n = read(), m = read();
for (int i = 1; i <= n; ++i) {
tree[i].first = read() + 1, tree[i].second = read() + 1;
lsh[++len] = tree[i].second;
}
int nd = 0;
for (int i = 1, js = 0; i <= m; ++i) {
int x = read() + 1, y = read() + 1, X = read() + 1, Y = read() + 1;
lsh[++len] = Y, lsh[++len] = y - 1;
if (X and Y)
Q[++nd] = ask(i, 1, X, Y);
if (X and (y - 1))
Q[++nd] = ask(i, -1, X, y - 1);
if ((x - 1) and Y)
Q[++nd] = ask(i, -1, x - 1, Y);
if ((x - 1) and (y - 1))
Q[++nd] = ask(i, 1, x - 1, y - 1);
} sort(lsh + 1, lsh + 1 + len);
len = unique(lsh + 1, lsh + 1 + len) - lsh - 1;
for (int i = 1; i <= n; ++i)
tree[i].second = lower_bound(lsh + 1, lsh + 1 + len, tree[i].second) - lsh;
for (int i = 1; i <= nd; ++i) {
Q[i].y = lower_bound(lsh + 1, lsh + 1 + len, Q[i].y) - lsh;
} sort(tree + 1, tree + 1 + n);
sort(Q + 1, Q + 1 + nd); int js = 1;
for (int i = 1; i <= nd; ++i) {
while (tree[js].first <= Q[i].x && js <= n)
BIT::add(tree[js].second),++js;
ans[Q[i].id] += Q[i].q * BIT::query(Q[i].y);
} for (int i = 1; i <= m; ++i)
printf("%d\n", ans[i]); return 0;
}

bzoj1935: [Shoi2007]Tree 园丁的烦恼lowbit 离散化的更多相关文章

  1. BZOJ 1935: [Shoi2007]Tree 园丁的烦恼( 差分 + 离散化 + 树状数组 )

    假如矩阵范围小一点就可以直接用二维树状数组维护. 这道题,  差分答案, 然后一维排序, 另一维离散化然后树状数组维护就OK了. ----------------------------------- ...

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

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

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

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

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

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

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

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

  6. 初涉二维数点问题&&bzoj1935: [Shoi2007]Tree 园丁的烦恼

    离线好评 Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个 ...

  7. [BZOJ1935][SHOI2007]Tree 园丁的烦恼(离线+树状数组)

    题意 给出第一象限的n个点,有m次询问,每次询问一个矩形中的点的个数.(0<=n,m<=500000,0<=xi,yi<=10000000) 题解 一眼望去不可做. 用二位前缀 ...

  8. [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼

    来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...

  9. BZOJ1935:[SHOI2007]Tree 园丁的烦恼(CDQ分治)

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

随机推荐

  1. Maven:repositories、distributionManagement、pluginRepositories中repository的区别

    本文链接:https://blog.csdn.net/netyeaxi/article/details/95804076 目录 一.repositories中的repository 二.distrib ...

  2. SecureCRT上传本地文件到linux

    1.使用crt登录到需要操作的linux系统 2.按Alt+P打开sftp传输界面 3.输入pur指令加文件路径,例如:put E://srs-3.0.zip按enter就可以 4.再返回crt界面, ...

  3. ASP.NET SignalR 系列(七)之服务端触发推送

    前面几章讲的都是从客户端触发信息推送的,但在实际项目中,很多信息可能是由系统服务端推送的,下面2图分别展示两种通道 客户端触发推送 服务端推送 下面我们就重点介绍下服务端如何调用集线器的对象进行推送 ...

  4. Django的安全攻击

    目录 Django的安全攻击 XSS XSS(跨站脚本攻击) 危害 原理 防护 csrf(Cross Site Request Forgery) csrf(跨站域请求伪造) 过程 Django 提供的 ...

  5. 小程序mpvue怎么点击按钮获取button里面的值

    在小程序里面是没有dom元素的,这个我们只要会小程序的应该都知道,但是在平时开发中我们偶尔会遇到需要点击某个元素获取它的值的情况,在这里给大家列举了两种情况解决方法 方式一:数据绑定 这种情况的话,对 ...

  6. 前端工程师拿到全新的 Mac 需要做哪些准备

    最近苹果退出了新款 Mac,用了3年15款Pro之后,终于盼到18款的降价,于是含泪更新换代 但是每次换电脑,重装环境的好多东西记不清,于是记个笔记 一.终端 安装 zsh sh -c "$ ...

  7. Windows - CMD窗口UTF8编码乱码问题的解决!

    问题描述    用MS-DOC打开 UTF-8 的文件时, 显示乱码问题根源    CMD默认是Windows系统默认编码(GBK),    用GBK格式来解码UTF-8的文件当然会出现乱码.解决方案 ...

  8. JVM 源码解读之 CMS 何时会进行 Full GC

    t点击上方"涤生的博客",关注我 转载请注明原创出处,谢谢!如果读完觉得有收获的话,欢迎点赞加关注. 前言 本文内容是基于 JDK 8 在文章 JVM 源码解读之 CMS GC 触 ...

  9. PHP实现单人多人聊天源码免费分享 | 电脑报修系统

    源码清单 1. 简易版登陆式聊天源码. 2. 电脑报修轻系统源码. 3. 关注下面公众号回复“聊天”,免费获取. 聊天系统 虽然微信,QQ是即时通讯的元老.但是他们限制很多,所以很多人都想做一个自己的 ...

  10. kbmmw 5.10.10 发布

    这个版本主要是bug修正. New stuff         =========         - Added OnException event property to TkbmMWSchedu ...