bzoj1935: [Shoi2007]Tree 园丁的烦恼lowbit 离散化
链接
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 离散化的更多相关文章
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼( 差分 + 离散化 + 树状数组 )
假如矩阵范围小一点就可以直接用二维树状数组维护. 这道题, 差分答案, 然后一维排序, 另一维离散化然后树状数组维护就OK了. ----------------------------------- ...
- bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 552 Solved: 220[Submit][ ...
- [bzoj1935][shoi2007]Tree 园丁的烦恼(树状数组+离线)
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 980 Solved: 450[Submit][ ...
- [bzoj1935][Shoi2007]Tree 园丁的烦恼 _树状数组
Tree 园丁的烦恼 bzoj-1935 Shoi-2007 题目大意:给定平面上的$n$个点,$m$次查询矩形点个数. 注释:$1\le n,m\le 5\cdot 10^5$. 想法:静态二维数点 ...
- 初涉二维数点问题&&bzoj1935: [Shoi2007]Tree 园丁的烦恼
离线好评 Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个 ...
- [BZOJ1935][SHOI2007]Tree 园丁的烦恼(离线+树状数组)
题意 给出第一象限的n个点,有m次询问,每次询问一个矩形中的点的个数.(0<=n,m<=500000,0<=xi,yi<=10000000) 题解 一眼望去不可做. 用二位前缀 ...
- [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼
来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...
- BZOJ1935:[SHOI2007]Tree 园丁的烦恼(CDQ分治)
Description 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他问一个园丁道: ...
随机推荐
- C#子线程执行完后,调用主线程的方法
private delegate void CheckVersionNumber_CallBack(string str);//定义一个为委托 用于 检测版本 //检测版本private void m ...
- C# Modbus 数据读取 使用NModBus4库
ModBus通讯协议 方法名 作用 所需参数 返回值 对应功能码 ReadCoils 读取DO的状态 从站地址(8位) byte slaveAddress 起始地址(16位) ushort start ...
- 使用wcftestclient.exe测试时,增加“最大消息大小配额”--maxReceivedMessa
使用 WcfTestClient.exe工具测试的时候,可能会出现:这样的提示: 已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的 MaxReceivedMessa ...
- Spring项目中的数据库加密
有时候为了安全,我们需要对数据库密码进行加密: SpringDruid数据源加密数据库密码 当我们初步开始打造系统时,什么都没有一片空白,而数据源使用的是SpringDruid时,我们可以通过这篇博客 ...
- Shadowmap简易实现
之前一直没有自己实现过阴影,只是概念上有所了解,这次通过Demo进行实际编写操作. 总的来说没有什么可以优化的,倒是对于窗户这种可用面片代替的物体似乎能优化到贴图上,之前arm有个象棋屋的demo做过 ...
- idea 把 springboot 项目打包成 jar
在maven项目中,查看是否有maven的插件,无则添加配置maven插件: <build> <plugins> <plugin> <groupId>o ...
- TI DSP数据长度
环境CCS7.2 平台C6748 结果: sizeof short int is 2sizeof int is 4sizeof long is 4sizeof unsigned long is 4si ...
- 【解决】挂载NFS服务时,不同共享客户端间的数据不同步
问题现象 当您用台 ECS 挂载同一个 NFS 文件系统,在 ECS-A 上 append 写文件,在 ECS-B 用 tail -f 观察文件内容的变化.在 ECS-A 写完之后,在 ECS-B 看 ...
- Git for Windows安装教程
1.国内直接从官网(http://git-scm.com/download/win)下载比较困难,速度极慢,需要翻墙. 这里提供一个国内的下载站,方便网友下载(https://npm.taobao.o ...
- 【Javascript】call
var ShowDlg = function ShowDlg() { } ShowDlg.prototype.animate = function(msg) { alert(msg); } var l ...