[SHOI2007]园丁的烦恼
裸的二维数点
#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"
using namespace std;
const int MAXN=5e5+5;
int n,m,maxn;
int Tib[MAXN*3];
struct rpg{
	int kd,x,y,id;
	int rey,val;
}pnt[MAXN*5];
bool cmp1(rpg a,rpg b){return a.y<b.y;}
bool cmp2(rpg a,rpg b)
{
	if(a.x!=b.x) return a.x<b.x;
	if(a.y!=b.y) return a.y<b.y;
	return a.kd<b.kd;
}
inline int read()
{
	int x=0;char ch=getchar();
	while(ch<'0'||'9'<ch) ch=getchar();
	while('0'<=ch&&ch<='9') x=x*10+(ch^48),ch=getchar();
	return x;
}
void init()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		int x=read(),y=read();
		pnt[i]=(rpg){1,x,y,m+n};
	}for(int i=1;i<=m;++i){
		int a=read(),b=read(),c=read(),d=read();
		pnt[n+i]=(rpg){2,a-1,b-1,i};
		pnt[n+m+i]=(rpg){3,a-1,d,i};
		pnt[n+(m<<1)+i]=(rpg){4,c,b-1,i};
		pnt[n+(m*3)+i]=(rpg){5,c,d,i};
	}sort(pnt+1,pnt+n+(m<<2)+1,cmp1);pnt[1].rey=1;
	for(int i=2;i<=n+(m<<2);++i) pnt[i].rey=pnt[i].y==pnt[i-1].y?pnt[i-1].rey:pnt[i-1].rey+1;
	maxn=pnt[n+(m<<2)].rey;sort(pnt+1,pnt+n+(m<<2)+1,cmp2);
	return;
}
void ins(int x)
{
	for(int i=x;i<=maxn;i+=i&-i) ++Tib[i];
	return;
}
int query(int x)
{
	int sum=0;
	for(int i=x;i;i&=i-1) sum+=Tib[i];
	return sum;
}
bool cmp3(rpg a,rpg b){return a.id==b.id?a.kd<b.kd:a.id<b.id;}
void solve()
{
	for(int i=1;i<=n+(m<<2);++i){
		if(pnt[i].kd==1) ins(pnt[i].rey);
		else pnt[i].val=query(pnt[i].rey);
	}sort(pnt+1,pnt+n+(m<<2)+1,cmp3);
	for(int i=1;i<=(m<<2);i+=4){
		printf("%d\n",pnt[i].val-pnt[i+1].val-pnt[i+2].val+pnt[i+3].val);
	}return;
}
int main()
{
	init();
	solve();
	return 0;
}
												
											[SHOI2007]园丁的烦恼的更多相关文章
- P2163 [SHOI2007]园丁的烦恼
		
题目 P2163 [SHOI2007]园丁的烦恼 做法 关于拆点,要真想拆直接全部用树状数组水过不就好了 做这题我们练一下\(cdq\)分治 左下角\((x1,y1)\)右上角\((x2,y2)\), ...
 - bzoj1935 [Shoi2007]园丁的烦恼
		
bzoj1935 [Shoi2007]园丁的烦恼 有N个点坐标为(xi,yi),M次询问,询问(a,b)-(c,d)的矩形内有多少点. 0≤n≤500000,1≤m≤500000,0≤xi,yi≤10 ...
 - 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)
		
P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园 ...
 - [LuoguP2163][SHOI2007]园丁的烦恼_CDQ分治
		
园丁的烦恼 题目链接:https://www.luogu.org/problem/P2163 数据范围:略. 题解: 树套树过不去,那就$CDQ$分治好了. 有点小细节,但都是$CDQ$分治必要的. ...
 - P2163 【[SHOI2007]园丁的烦恼】
		
其实是不用把一个询问拆成四个的 把询问转化为数学语言: 对于每个查询,询问满足$a<=x<=b$且$c<=y<=d$的点$x,y$的个数 ~~自然~~想到偏序问题,看到有两个式 ...
 - P2163 [SHOI2007]园丁的烦恼(cdq分治)
		
思路 其实是cdq的板子 题目要求询问对于每个给出的xi,yi,xj,yj形如xi<=x<=xj.yi<=y<=yj的x,y对数有多少组 改成四个询问,拆成四个前缀和的形式后就 ...
 - BZOJ1935或洛谷2163 [SHOI2007]园丁的烦恼
		
BZOJ原题链接 洛谷原题链接 很容易想到二维前缀和. 设\(S[i][j]\)表示矩阵\((0, 0)(i, j)\)内树木的棵数,则询问的矩形为\((x, y)(xx, yy)\)时,答案为\(S ...
 - 【[SHOI2007]园丁的烦恼】
		
\(CDQ\) 分治的神奇操作 这个问题跟偏序问题好像差的不小啊 但是就是可以转化过去 对于一个查询我们可以把它拆成四个,也就是用二维前缀和的方式来查询 我们发现其实前缀和的定义就是多少个点的横纵坐标 ...
 - luoguP2163 [SHOI2007]园丁的烦恼
		
安利系列博文 https://www.cnblogs.com/tyner/p/11565348.html https://www.cnblogs.com/tyner/p/11605073.html 题 ...
 
随机推荐
- python 爬恶魔法则(单线程卡成狗)
			
from bs4 import BeautifulSoupimport requestsimport sysclass down(object): def __init__(self): self.n ...
 - 部署到docker容器后图片验证码显示不出来
			
Dockerfile如下: FROM openjdk:8-jre-alpineARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java&qu ...
 - phpStudy mysql升级至5.7
			
1.先停止mysql服务,卸载原来的mysql (其他菜单-->服务器管理--->MySQL--->卸载服务) 2.下载MySQL你需要的版本 ZIP Archive 版本 3.解压 ...
 - MarkDown添加图片的三种方式
			
插图最基础的格式就是:  Alt text:图片的Alt标签,用来描述图片的关键词,可以不写.最初的本意是当图片 ...
 - 厉害了,七牛云 CEO 来讲架构了!
			
说起许式伟,你应该不陌生,他是七牛云的CEO,ECUG 社区发起人,国内 Go 语言圈的领军人物,曾就职于金山.盛大,有超过 10 年的搜索和分布式存储相关技术的研发经验. 他的个人经历颇为传奇,大学 ...
 - Linux网络编程服务器模型选择之并发服务器(上)
			
与循环服务器的串行处理不同,并发服务器对服务请求并发处理.循环服务器只能够一个一个的处理客户端的请求,显然效率很低.并发服务器通过建立多个子进程来实现对请求的并发处理.并发服务器的一个难点是如何确定子 ...
 - java常量类的实现方式_枚举类_项目实践
			
前言 众所周知,系统里有很多比如订单状态.审核状态:性别.结算方式.交易类型等属性,这些属性只有几个值,一般用0.1.2.3等的数字标识存入数据库,每次对这些属性所属对象的增删改操作,都会在代码里给状 ...
 - nginx图片处理笔记(http-image-filter-module、lua)
			
实验环境:CentOS 6.10 目标:1.使用http-image-filter-module进行图片变换:2.使用lua进行格式转换: 安装EPEL https://fedoraproject.o ...
 - eclipse自定义代码注释
			
效果如下: 自定义注释的方法:
 - JavaScript数据结构-6.优先队列
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...