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…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 改一下估价即可.判断子树能否整个取或者是否整个不能取,时间好像就能行了? 因为有负数,所以判一下四个边界.注意这个区域本身还占了一个点. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using name…
bzoj 2850 巧克力王国 钱限题.题面可以看这里. 显然 \(x\) \(y\) 可以看成坐标平面上的两维,蛋糕可以在坐标平面上表示为 \((x,y)\) ,权值为 \(h\) .用 \(kd-tree\) 维护这些点. 查询时,类似于线段树,若当前节点管辖范围完全在查询范围内,直接返回当前节点记录的总和;若完全在查询范围外,返回 \(0\) ;否则进入两颗子树,递归处理. 如何判断当前节点管辖范围与查询范围的关系?注意到查询范围是一个限制 \(ax+by<c\) ,即一个半平面.而用记录…
题目大意 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…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 只要暴力判断是否全选一个子树或全不选,如果都不是就进入查询: 要注意值有负,所以不是直接看 min 和 max 的组合,而是各种都试一遍: pushup 时不要把 sum 累加写在循环里... 代码如下: #include<cstdio> #include<cstring> #include<algorithm> #define mid ((l+r)>…
[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的巧克力对于他的甜…
Code: #include<bits/stdc++.h> #define maxn 200000 #define inf 1000000000 using namespace std; void getmin(int &a,int b) { if(b<a) a=b; } void getmax(int &a,int b) { if(b>a) a=b; } void setIO(string s) { string in=s+".in"; str…
Code: #include<bits/stdc++.h> #define ll long long #define maxn 200000 #define inf 100000000000000 #define lson (t[x].ch[0]) #define rson (t[x].ch[1]) #define mid ((l+r)>>1) using namespace std; void debug() { printf("no_problem\n");…
KD-Tree 问平面内在某条直线下方的点的权值和 我一开始yy的是:直接判这个矩形最高的两个点(y坐标的最大值)是否在这条直线下方就可以了~即判$A*x+B*y<C$... 然而这并不对啊……因为你得分类讨论啊……不能直接判那个式子的啊…… 膜拜了hzwer的姿势:四个角都判,那么这样就避免了分类讨论……轻松+愉快 今天突然发现:KD-Tree是会Push_up叶子节点的,这点跟线段树不一样……QAQ怪不得以前模板那样写是错的…… 另外,鉴于上一题出了个讨厌的bug,我换了种姿势来push_u…