[SHOI2007]园丁的烦恼】的更多相关文章

题目 P2163 [SHOI2007]园丁的烦恼 做法 关于拆点,要真想拆直接全部用树状数组水过不就好了 做这题我们练一下\(cdq\)分治 左下角\((x1,y1)\)右上角\((x2,y2)\),查询\(x1≤x≤x2\)&&\(y1≤y≤y2\)的个数 假设点(x,y)为矩形\((x,y)(x,y)\) 其实我们要查询的是\(x1≤x,x2≥x,y1≤y≤y2\) 初始化排序\(x\)降序排,去掉\(x1≤x\),树状数组限制\(x≤x2\),区间查询\(y1≤y≤y2\),就是一三…
bzoj1935 [Shoi2007]园丁的烦恼 有N个点坐标为(xi,yi),M次询问,询问(a,b)-(c,d)的矩形内有多少点. 0≤n≤500000,1≤m≤500000,0≤xi,yi≤10000000 看完数据范围傻眼系列. 做法: 离线处理 因为这个范围肯定不能把x y都离散, 所以只把点和询问的y坐标放在一起都离散化,然后一起按x坐标排序, 再开一个树状数组,求出每个需要的点的二维前缀和. 不理解的话拿画图板画一下就好了. 细节见代码 #include<bits/stdc++.h…
P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园里,若有所思,他问一个园丁道: "最近我在思索一个问题,如果我们把花坛摆成六个六角形,那么--" "那么本质上它是一个深度优先搜索,陛下",园丁深深地向国王鞠了一躬. "嗯--我听说有一种怪物叫九头蛇,它非常贪吃苹果树--" "是的,显然这…
园丁的烦恼 题目链接:https://www.luogu.org/problem/P2163 数据范围:略. 题解: 树套树过不去,那就$CDQ$分治好了. 有点小细节,但都是$CDQ$分治必要的. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 1000010 using namespace std; struct Nod…
其实是不用把一个询问拆成四个的 把询问转化为数学语言: 对于每个查询,询问满足$a<=x<=b$且$c<=y<=d$的点$x,y$的个数 ~~自然~~想到偏序问题,看到有两个式子,二维偏序?好像办不到,反正我不会 如何升维,拆分即可 把原式拆成$a<=x,x<=b,c<=y,y<=d$,这样就可以用四维偏序解决了,但是这样的复杂度显然是不能保证的 尝试降维 如果这样呢$a<=x,x<=b,c<=y<=d$ 对于一个点,我们定义其三个维…
思路 其实是cdq的板子 题目要求询问对于每个给出的xi,yi,xj,yj形如xi<=x<=xj.yi<=y<=yj的x,y对数有多少组 改成四个询问,拆成四个前缀和的形式后就变成熟悉的偏序问题 (query(xj,yj)-query(xj,yi))-(query(xi,yj)-query(xi,yi)) 变形为 query(xj,yj)-query(xj,yi)-query(xi,yj)+query(xi,yi)后使用cdq分治套BIT的方法求解 代码 #include <…
BZOJ原题链接 洛谷原题链接 很容易想到二维前缀和. 设\(S[i][j]\)表示矩阵\((0, 0)(i, j)\)内树木的棵数,则询问的矩形为\((x, y)(xx, yy)\)时,答案为\(S[xx][yy] - S[x - 1][yy] - S[xx][y - 1] + S[x - 1][y - 1]\). 但这题坐标极大,显然不能直接求. 对\(x,y\)都进行离散化,然后我们考虑求询问. 将询问的矩阵拆成二维前缀和计算形式的四个矩阵,这样就可以用扫描线快速求矩阵,并统计答案即可.…
裸的二维数点 #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 c…
\(CDQ\) 分治的神奇操作 这个问题跟偏序问题好像差的不小啊 但是就是可以转化过去 对于一个查询我们可以把它拆成四个,也就是用二维前缀和的方式来查询 我们发现其实前缀和的定义就是多少个点的横纵坐标都小于这个点 典型的偏序问题 于是直接上\(cdq\)了 代码 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define re register #defi…
安利系列博文 https://www.cnblogs.com/tyner/p/11565348.html https://www.cnblogs.com/tyner/p/11605073.html 题意 https://www.luogu.org/problem/P2163 如摘要所示,二位静态数点 分析 离线下来 先,按照y为第一关键字,x为第二关键字排序,把n个数点,和询问的4*m个点都加进去,然后优先数点 这样就可以用关于 x 的树状数组进行求和和加点操作,进而用查询矩形的四个端点的sum…