首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
[SHOI2007]园丁的烦恼
2024-10-10
P2163 [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]园丁的烦恼
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]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)
P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园里,若有所思,他问一个园丁道: "最近我在思索一个问题,如果我们把花坛摆成六个六角形,那么--" "那么本质上它是一个深度优先搜索,陛下",园丁深深地向国王鞠了一躬. "嗯--我听说有一种怪物叫九头蛇,它非常贪吃苹果树--" "是的,显然这
[LuoguP2163][SHOI2007]园丁的烦恼_CDQ分治
园丁的烦恼 题目链接:https://www.luogu.org/problem/P2163 数据范围:略. 题解: 树套树过不去,那就$CDQ$分治好了. 有点小细节,但都是$CDQ$分治必要的. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 1000010 using namespace std; struct Nod
P2163 【[SHOI2007]园丁的烦恼】
其实是不用把一个询问拆成四个的 把询问转化为数学语言: 对于每个查询,询问满足$a<=x<=b$且$c<=y<=d$的点$x,y$的个数 ~~自然~~想到偏序问题,看到有两个式子,二维偏序?好像办不到,反正我不会 如何升维,拆分即可 把原式拆成$a<=x,x<=b,c<=y,y<=d$,这样就可以用四维偏序解决了,但是这样的复杂度显然是不能保证的 尝试降维 如果这样呢$a<=x,x<=b,c<=y<=d$ 对于一个点,我们定义其三个维
P2163 [SHOI2007]园丁的烦恼(cdq分治)
思路 其实是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 <
BZOJ1935或洛谷2163 [SHOI2007]园丁的烦恼
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\)都进行离散化,然后我们考虑求询问. 将询问的矩阵拆成二维前缀和计算形式的四个矩阵,这样就可以用扫描线快速求矩阵,并统计答案即可.
[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 c
【[SHOI2007]园丁的烦恼】
\(CDQ\) 分治的神奇操作 这个问题跟偏序问题好像差的不小啊 但是就是可以转化过去 对于一个查询我们可以把它拆成四个,也就是用二维前缀和的方式来查询 我们发现其实前缀和的定义就是多少个点的横纵坐标都小于这个点 典型的偏序问题 于是直接上\(cdq\)了 代码 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define re register #defi
luoguP2163 [SHOI2007]园丁的烦恼
安利系列博文 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
热门专题
Teechart 安装 delphi10
mysqld install什么意思
openssl req -days最多
spring@value 不能将string转换成value
ip地址违法,请连接联通
soapui使用教程rest
ctf 病毒破坏引导区
html禁止video标签自带播放器下载
design dxpert 怎么加一个响应值
react axios封装并全局引入
PWM setcompare需要放在循环里么
python 一行一行的写yaml
juqery 元素所在行 的其他
jQuery DataTable的参数值
python打包http微服务
arcgis动态文本显示经纬度怎么去除掉东这个文字
kubectl proxy 重启
kali linux没有声音
unity 动画 lerp
selenium 加一个请求头