[bzoj2850]巧克力王国_KD-Tree】的更多相关文章

Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 505  Solved: 204 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜 欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的 评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因此牛奶和可可含量分别为x 和y的巧克力对于他的甜味程度即为ax…
巧克力王国 bzoj-2850 题目大意:给出n块巧克力,每块巧克力都有自己的两个参数x和y和本身的价值val,询问:m个人,每个人有两个系数和一个限度a,b,和c.求所有ax+by<=c的巧克力价值和. 注释:$1\le n,n\le 5\cdot 10^4$. 想法:我们将巧克力的两个参数分别当作它的横纵坐标,然后对于每一次询问就可以转化成查询给定直线下的点的点权和. 对于这个问题,我们可以建立KD-Tree解决. 估价函数就是看这个矩形是不是都选或者都不选,否则的话,就遍历这个矩形. 最后…
巧克力王国 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 861  Solved: 325[Submit][Status][Discuss] Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜 欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的 评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因…
分四种情况讨论:a,b>=0 a,b<0 a>=0,b<0 a<0,b>=0 然后每次检验是否进入一个矩形框 或者 是否直接利用这个矩形框的答案 仅仅利用两个对角的坐标进行更新即可. #include<cstdio> #include<cmath> #include<algorithm> using namespace std; typedef long long ll; #define N 50001 #define INF 214…
思路:\(k-d\ tree\) 提交:2次 错因:\(query\)时有一个\(mx\)误写成\(mn\)窝太菜了. 题解: 先把\(k-d\ tree\)建出来,然后查询时判一下整个矩形是否整体\(or\)一部分\(or\)全都不 满足\(Ax+By<C\),来决定直接返回子树和,还是递归子树,还是返回\(0\) #include<cstdio> #include<iostream> #include<algorithm> #define ull unsign…
[BZOJ2850]巧克力王国 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜 欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的 评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因此牛奶和可可含量分别为x 和y的巧克力对于他的甜味程度即为ax + by.而每个人又有一个甜味限度c,所有甜味程度大于等于c的巧克力他都 无法接受.每块巧克力都…
巧克力王国 Time Limit: 60 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 巧克力王国里的巧克力都是由牛奶和可可做成的. 但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设x和y为其牛奶和可可的含量. 由于每个人对于甜的程度都有自己的评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因此牛奶和可可含量分别为x和y的巧克力对于他的甜…
bzoj 2850 巧克力王国 钱限题.题面可以看这里. 显然 \(x\) \(y\) 可以看成坐标平面上的两维,蛋糕可以在坐标平面上表示为 \((x,y)\) ,权值为 \(h\) .用 \(kd-tree\) 维护这些点. 查询时,类似于线段树,若当前节点管辖范围完全在查询范围内,直接返回当前节点记录的总和;若完全在查询范围外,返回 \(0\) ;否则进入两颗子树,递归处理. 如何判断当前节点管辖范围与查询范围的关系?注意到查询范围是一个限制 \(ax+by<c\) ,即一个半平面.而用记录…
洛谷P4475 巧克力王国 题目描述 巧克力王国里的巧克力都是由牛奶和可可做成的. 但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 x 和 y 为其牛奶和可可的含量. 由于每个人对于甜的程度都有自己的评判标准,所以每个人都有两个参数 a 和 b ,分别为他自己为牛奶和可可定义的权重, 因此牛奶和可可含量分别为 x 和 y 的巧克力对于他的甜味程度即为 ax+by. 而每个人又有一个甜味限度 c ,所有甜味程度大于等于 c 的巧克力他都无法接受…
原题链接 Description 给出个二维平面上的点,第个点为,权值为.接下来次询问,给出,求所有满足的点的权值和. Solution 对于这个点建一棵k-d树,子树维护一个子树和. 如果子树所代表的矩形的四个顶点都满足,说明子树中的所有点都满足,return sum: 如果都不满足,说明子树中的所有点都不满足,就不用做了: 否则就是部分有部分没有,判断当前节点是否满足,然后继续递归下去吧. Code //巧克力王国 #include <cstdio> #include <algori…
P4475 巧克力王国 题目描述 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 \(x\) 和 \(y\) 为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的评判标准,所以每个人都有两个参数 \(a\) 和 \(b\) ,分别为他自己为牛奶和可可定义的权重, 因此牛奶和可可含量分别为 \(x\) 和 \(y\) 的巧克力对于他的甜味程度即为 \(ax+by\).而每个人又有一个甜味限度 \(c…
KD-Tree 问平面内在某条直线下方的点的权值和 我一开始yy的是:直接判这个矩形最高的两个点(y坐标的最大值)是否在这条直线下方就可以了~即判$A*x+B*y<C$... 然而这并不对啊……因为你得分类讨论啊……不能直接判那个式子的啊…… 膜拜了hzwer的姿势:四个角都判,那么这样就避免了分类讨论……轻松+愉快 今天突然发现:KD-Tree是会Push_up叶子节点的,这点跟线段树不一样……QAQ怪不得以前模板那样写是错的…… 另外,鉴于上一题出了个讨厌的bug,我换了种姿势来push_u…
题意 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 x 和 y 为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的评判标准,所以每个人都有两个参数 a 和 b ,分别为他自己为牛奶和可可定义的权重, 因此牛奶和可可含量分别为 x 和 y 的巧克力对于他的甜味程度即为 ax+by.而每个人又有一个甜味限度 c ,所有甜味程度大于等于 c 的巧克力他都无法接受.每块巧克力都有一个美味值 h . 现…
BZOJ_2850_巧克力王国_KDTree Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜 欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的 评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因此牛奶和可可含量分别为x 和y的巧克力对于他的甜味程度即为ax + by.而每个人又有一个甜味限度c,所有甜味程度大于等于c的巧克力他都 无法接受…
巧克力王国 [问题描述] 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因此牛奶和可可含量分别为x和y的巧克力对于他的甜味程度即为ax + by.而每个人又有一个甜味限度c,所有甜味程度大于等于c的巧克力他都无法接受.每块巧克力都有一个美味值h.现在我们想知道对于每个…
Code: #include<bits/stdc++.h> #define maxn 100000 #define inf 1000000008 #define mid ((l+r)>>1) #define ll long long #define lson (t[x].ch[0]) #define rson (t[x].ch[1]) using namespace std; void setIO(string s) { string in=s+".in"; f…
Lockey的瞎理解 抄了一遍板子又水了俩题,感觉对KD-tree 稍稍理解了一点儿,唠叨一下(二维的KD-tree),如有错误请指出(Lockey 洗脸恭听) 普通平衡树维护的是一维的序列,但对于二维(可以建平衡树套平衡树,但不好维护)甚至多维就凉了,所以就用到了KD-tree这一神奇的数据结构(伪装“砖家”ing-) KD-tree 将二维的平面分别按x,y轮流划分,将平面建成一棵BST ,然后查找,在树中维护当前点所代表的值以及记录以它为根的子树信息(最大值,最小值,值的和,等等), 而通…
题目大意 http://www.lydsy.com/JudgeOnline/problem.php?id=2850 题解 对于每个人,我们发现它能够接受的巧克力中 如果对参数分别讨论,那么一定是一个连续的区间 所以我们利用K-D划分维度,然后直接搜就好了 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; inline v…
传送门 首先可以把约束条件看成一条直线,然后每个巧克力看成一个点,求给定区域内的点权和 用KDTree,每次判断一下当前矩形是否整个都在里面或都在外面,是的话直接返回,否则的话递归 注意,必须该矩形四个顶点都在里面或外面才能判断 //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define f…
(嘤嘤嘤 又是一个自闭了一晚上的题) qwq果然不是平面上的点的问题,也可以直接用KDTree打暴力 我们对于巧克力直接建kdtree 维护一个\(mx[i],mn[i]\) 但是有一个非常不友好的事情 我们貌似很难对这个东西进行一些实质上的剪枝 因为他求的是一个和的形式,而不是一个最值QWQ 那么该怎么办呢? 我们这时候考虑,对于一个kdtree上的每一个节点,我们都维护一个子树sum表示子树内的所有巧克力的权值之和. 那么对于一次\(query\),假设我们最大的甜度都不会超过\(c\)的话…
复习了下KDtree,贴一下新板子233. #include "bits/stdc++.h" using namespace std; inline int read(){ ,k=;char ch=getchar (); :,ch=getchar(); &ch<=+(ch^),ch=getchar(); return s*k; } ; typedef long long ll; int Kd; ll A,B,C,ans; #define sum(x) (x?x->s…
传送门 分析 我们多维护一个值,代表某个点子树中所有点的权值和 于是如果某个点它的min和max乘a(/b)的值小于范围则直接把整个子树都加进去 估价函数就是这个点的子树中的理论最小值 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cma…
luogu 题意 平面上有\(n\)个点,每个点\((x_i,y_i)\),价值为\(w_i\).\(m\)次询问,每次给出\(a_i,b_i,c_i\)求满足\(a_ix+b_iy<c_i\)的点的总价值. \(n,m\le50000\) sol 正解貌似是\(O(n^{1.5}\log n)\)? 我只会\(kdt\)qaq 直接暴力就行了,每到一个结点判断是否可以直接返回(交集为空),全部算上(完全包含与查询范围),算是剪枝吧. code #include<cstdio> #inc…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 改一下估价即可.判断子树能否整个取或者是否整个不能取,时间好像就能行了? 因为有负数,所以判一下四个边界.注意这个区域本身还占了一个点. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using name…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 只要暴力判断是否全选一个子树或全不选,如果都不是就进入查询: 要注意值有负,所以不是直接看 min 和 max 的组合,而是各种都试一遍: pushup 时不要把 sum 累加写在循环里... 代码如下: #include<cstdio> #include<cstring> #include<algorithm> #define mid ((l+r)>…
bzoj1941: [Sdoi2010]Hide and Seekbzoj2626: JZPFARbzoj4520: [Cqoi2016]K远点对bzoj2989: 数列bzoj2850: 巧克力王国 bzoj4605: 崂山白花蛇草水…
听说k-d tree是一个骗分的好东西?(但是复杂度差评??? 还听说绍一的kdt常数特别小? KDT是什么 KDT的全称是k-degree tree,顾名思义,这是一种处理多维空间的数据结构. 例如,给定一张二维图,每次会插入一些点,并且查询一个矩形区域内的点数. 上面这个问题可以离线cdq分治,也可以离线离散化处理,这两个做法可以参见初涉二维数点问题.不过这就是2-d tree基础的应用,使得我们可以在线处理这个问题. 网上关于KDT的解释博客有很多,但我认为在了解了k-d tree的作用之…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
考 \(NOI\) 时不会,感觉很亏.于是学了一上午,写了一晚上. 感觉这东西就是个复杂度玄学的高级暴力 (大雾 KD-tree 基本信息 \(D\) 就是 \(Dimension\) ,维度的意思. \(KD-tree\) 就是用来解决多维点的问题. 它可以说是一棵平衡树,但建树时用来比较的东西很奇特. 查询几乎与线段树类似,但更暴力一些.每次查询的复杂度为 \(O(n^{\frac{k-1}{k}})\) 最常见的时平面上点的问题,也就是 \(2D-tree\) 有时它的功能可被树套树或 \…
2021.07.09 K-D树 前置知识 1.二叉搜索树 2.总是很长的替罪羊树 K-D树 建树 K-D树具有二叉搜索树的形态,对于每一个分类标准,小于标准的节点在父节点左边,大于标准的节点在父节点右边. 例如:有三个坐标(2,2),(5,1),(6,4),x轴以5为标准,则(2,2)为(5,1)左儿子,(6,4)为(5,1)右儿子. 常见的建树方法有两个: 1.交替 从根节点出发,依次把k个维度作主要关键词. 例如:第一层以x轴坐标为关键词,第二层以y轴坐标为关键词,第三层还是以x轴坐标为关键…