【BZOJ 2850】巧克力王国
复习了下KDtree,贴一下新板子233。
#include "bits/stdc++.h"
using namespace std;
inline int read(){
int s=,k=;char ch=getchar ();
while (ch<''|ch>'') ch=='-'?k=-:,ch=getchar();
while (ch>&ch<='') s=s*+(ch^),ch=getchar();
return s*k;
}
const int N=5e4+;
typedef long long ll;
int Kd;
ll A,B,C,ans;
#define sum(x) (x?x->sum:0)
struct Point{
int d[],mx[],mn[],val;
Point *lc,*rc;
ll sum;
int& operator [](int k){
return d[k];
}
friend bool operator <(Point a,Point b){
return a[Kd]<b[Kd];
}
inline void update(){
for (int i=;i<;++i) {
mx[i]=mn[i]=d[i];
if(lc) mx[i]=max(mx[i],lc->mx[i]),mn[i]=min(mn[i],lc->mn[i]);
if(rc) mx[i]=max(mx[i],rc->mx[i]),mn[i]=min(mn[i],rc->mn[i]);
}
sum=val+sum(lc)+sum(rc);
}
}cho[N];
#define check(x,y) (A*x+B*y<C)
inline int calc(Point x){
int ret=;
ret=check(x.mn[],x.mn[])+check(x.mx[],x.mx[])
+check(x.mn[],x.mx[])+check(x.mx[],x.mn[]);
return ret;
}
struct KdTree{
inline Point* build(int l,int r,int now){
Kd=now;int mid=l+r>>;
nth_element(cho+l,cho+mid,cho+r+);
Point *t=&cho[mid];
if(l^mid) t->lc=build(l,mid-,now^);
if(r^mid) t->rc=build(mid+,r,now^);
t->update();
return t;
}
inline void query(Point *t){
if (check(t->d[],t->d[])) ans+=t->val;
int tl=,tr=;
if(t->lc) tl=calc(*(t->lc));
if(t->rc) tr=calc(*(t->rc));
if(tl&) ans+=t->lc->sum;
else if(tl) query(t->lc);
if(tr&) ans+=t->rc->sum;
else if(tr) query(t->rc);
}
}kd;
int n,m;
int main(){
n=read(),m=read();
register int i,j;
for (i=;i<=n;++i)
cho[i][]=read(),cho[i][]=read(),
cho[i].val=read();
Point *root=kd.build(,n,);
while (m--){
A=read(),B=read(),C=read();
ans=;
kd.query(root);
printf("%lld\n",ans);
}
}
【BZOJ 2850】巧克力王国的更多相关文章
- bzoj 2850 巧克力王国
bzoj 2850 巧克力王国 钱限题.题面可以看这里. 显然 \(x\) \(y\) 可以看成坐标平面上的两维,蛋糕可以在坐标平面上表示为 \((x,y)\) ,权值为 \(h\) .用 \(kd- ...
- BZOJ 2850: 巧克力王国 KDtree + 估价函数
Code: #include<bits/stdc++.h> #define maxn 100000 #define inf 1000000008 #define mid ((l+r)> ...
- bzoj 2850: 巧克力王国 K-D树
题目大意 http://www.lydsy.com/JudgeOnline/problem.php?id=2850 题解 对于每个人,我们发现它能够接受的巧克力中 如果对参数分别讨论,那么一定是一个连 ...
- bzoj 2850 巧克力王国——KDtree
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 改一下估价即可.判断子树能否整个取或者是否整个不能取,时间好像就能行了? 因为有负数, ...
- bzoj 2850 巧克力王国 —— K-D树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2850 只要暴力判断是否全选一个子树或全不选,如果都不是就进入查询: 要注意值有负,所以不是直 ...
- 【BZOJ】【2850】【Violet 0】巧克力王国
KD-Tree 问平面内在某条直线下方的点的权值和 我一开始yy的是:直接判这个矩形最高的两个点(y坐标的最大值)是否在这条直线下方就可以了~即判$A*x+B*y<C$... 然而这并不对啊…… ...
- 巧克力王国 BZOJ 2850
巧克力王国 [问题描述] 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于 ...
- Bzoj2850 巧克力王国
Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 505 Solved: 204 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但 ...
- BZOJ2820 - 巧克力王国
原题链接 Description 给出个二维平面上的点,第个点为,权值为.接下来次询问,给出,求所有满足的点的权值和. Solution 对于这个点建一棵k-d树,子树维护一个子树和. 如果子树所代表 ...
- 洛谷 P4475 巧克力王国 解题报告
P4475 巧克力王国 题目描述 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 \(x\) 和 \( ...
随机推荐
- c语言 基本运算
计算机的基本能力就是计算,所以一门程序设计语言的计算能力是非常重要的.C语言之所以无所不能,是因为它不仅有丰富的数据类型,还有强大的计算能力.C语言一共有34种运算符,包括了常见的加减乘除运算.这讲就 ...
- Mysql精华版(命令大全)
数据库的操作 a) 创建数据库:create database 库名[库选项]; b) 查看数据库:show databases; show create database 库名; c) 删除数据库 ...
- VueJs(8)---组件(注册组件)
组件(注册组件) 一.介绍 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树 那么什么是组件呢? 组 ...
- java设计原则---开闭原则
开闭原则:指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modificat ...
- Ubuntu12.04下Django1.4的删除目录
网上有很多文章说这个问题,大意就是下载压缩包以后用 sudo python setup.py install 上面这条命令安装的Django,然后到相关目录下把那个Django的目录删掉就Ok了,但是 ...
- IT桔子沙龙之本地生活服务O2O探路者笔记整理
这个沙龙活动侧重于创业融资与投资角度 主持人:真格基金投资分析师顾女士;E-mail:grace@zhenfund.com;新浪微博:@顾三小姐 赞助商七牛云的服务宣传:静态资源托管:上传下载全网加速 ...
- Android OkHttp文件上传与下载的进度监听扩展
http://www.loongwind.com/archives/290.html 上一篇文章介绍了用Retrofit实现文件的上传与下载,但是我们发现没办法监听上传下载的进度,毕竟我们在做开发的时 ...
- Django Push 的一些资料
先来中文的: 主要讲Orbited: http://sunsetsunrising.com/2009/django_comet.html#gsc.tab=0 再来英文的: http://www.rkb ...
- 大数据征信的应用和启示:ZestFinance的基于大数据的信用评估技术
http://www.d1net.com/bigdata/news/325426.html 2014年11月,本文作者有机会和ZestFinance的创始人和首席执行官梅里尔(Douglas C.Me ...
- 关于在IJ中使用maven projects 的Lifecycle中打包package报expected START_TAG or END_TAG not TEXT
报错指定到maven本地仓库下的settings.xml某一行,如下列JDK配置: <profiles> <profile> <id>jdk-1.8</ ...