题面

找到真正的KD-Tree题目了!然而出题人并不打算放KD-Tree过,只能O2了

 // luogu-judger-enable-o2
#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int cmp;
struct a
{
int pos[],val;
}mem[N],kdt[N];
bool operator < (a x,a y)
{
return x.pos[cmp]<y.pos[cmp];
}
struct b
{
int mn[],mx[];
}qry;
int son[N][],mini[N][],maxx[N][];
long long sum[N],ans;
int n,m,f,t1,t2,cnt;
void read(int &x)
{
x=f=; char ch=getchar();
while(!isdigit(ch))
f|=ch=='-',ch=getchar();
while(isdigit(ch))
x=(x<<)+(x<<)+(ch^),ch=getchar();
x=f?-x:x;
}
void write(long long x)
{
if(x>) write(x/);
putchar(x%|);
}
bool Outof(int nde)
{
for(int i=;i<=;i++)
if(qry.mn[i]>maxx[nde][i]||qry.mx[i]<mini[nde][i])
return true; return false;
}
bool Allin(int nde)
{
for(int i=;i<=;i++)
if(qry.mn[i]>mini[nde][i]||qry.mx[i]<maxx[nde][i])
return false; return true;
}
bool Partin(a nde)
{
for(int i=;i<=;i++)
if(qry.mn[i]>nde.pos[i]||qry.mx[i]<nde.pos[i])
return false; return true;
}
void Pushup(int nde)
{
int lson=son[nde][],rson=son[nde][];
sum[nde]=sum[nde]+sum[lson]+sum[rson];
for(int i=;i<=;i++)
if(son[nde][i])
{
int sn=son[nde][i];
for(int j=;j<=;j++)
{
mini[nde][j]=min(mini[nde][j],mini[sn][j]);
maxx[nde][j]=max(maxx[nde][j],maxx[sn][j]);
}
}
}
void Create(int nde,int l,int r,int typ)
{
int mid=(l+r)/;
cmp=typ,nth_element(mem+l,mem+mid,mem+r+);
kdt[nde]=mem[mid],sum[nde]=mem[mid].val;
for(int i=;i<=;i++)
mini[nde][i]=maxx[nde][i]=mem[mid].pos[i];
if(l<mid) Create(son[nde][]=++cnt,l,mid-,typ^);
if(r>mid) Create(son[nde][]=++cnt,mid+,r,typ^);
Pushup(nde);
}
void Query(int nde)
{
if(Outof(nde)) return ;
if(Allin(nde)) {ans+=sum[nde]; return;}
if(Partin(kdt[nde])) ans+=kdt[nde].val;
Query(son[nde][]),Query(son[nde][]);
}
int main()
{
register int i;
read(n),read(m);
for(i=;i<=n;i++)
read(mem[i].pos[]),read(mem[i].pos[]),read(mem[i].val);
cnt=,Create(,,n,);
for(i=;i<=m;i++)
{
read(qry.mn[]),read(qry.mn[]);
read(qry.mx[]),read(qry.mx[]);
ans=,Query(),write(ans),puts("");
}
return ;
}

解题:CQOI 2017 老C的任务的更多相关文章

  1. 解题:CQOI 2017 老C的方块

    题面 看起来很像网络流的二分图套路题,然后我们大力观察(题目定义的相邻我用引号括起来,应该能看懂) 发现“相邻”的一对方格如果各自连着一个一个方格就gg了,于是对于所有这些“相邻”的方格,我们有两种选 ...

  2. 解题:CQOI 2017 小Q的表格

    题面 首先观察$b*f(a,a+b)=(a+b)*f(a,b)$这个东西 可以化成$\frac{f(a,a+b)}{a+b}=\frac{f(a,b)}{b}$,发现这类似辗转相除求gcd 而我们两边 ...

  3. 解题:CQOI 2017 小Q的棋盘

    题面 由树的结构我们可以知道,最终要么是连一条(最长的)链都没走完,要么是走了一些点最后走了最长的链.为什么总是说最长的链呢,因为在树上这样走的过程中(最后不要求返回的话)除了一条链都会被走两次,显然 ...

  4. NOIP2004 解题报告

    第一题:津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里, ...

  5. PHP代码安全杂谈

    虽然PHP是世界上最好的语言,但是也有一些因为弱类型语言的安全性问题出现.WordPress历史上就出现过由于PHP本身的缺陷而造成的一些安全性问题,如CVE-2014-0166 中的cookie伪造 ...

  6. BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 2818: Gcd Time Limit: 10 Sec  Memory Limit ...

  7. HDU 4456 Crowd

    Crowd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. 时间就是金钱HNCOI2000(最短路)

    时间就是金钱HNCOI2000 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! 人们总是选时间最短或费用最低的路线 例如, ...

  9. 【DTOJ】2704:数字互换

    DTOJ 2704:数字互换  解题报告 2017.11.11 第一版 ——由翱翔的逗比w原创 题目信息: 题目描述 输入两个数作为交换数,输出已交换顺序后的两个值. 输入 两个整数,空格隔开 输出 ...

随机推荐

  1. KClient——kafka消息中间件源码解读

    目录 kclient消息中间件 kclient-processor top.ninwoo.kclient.app.KClientApplication top.ninwoo.kclient.app.K ...

  2. 【Alpha】特殊情况通知

    由于我本人(SivilTaram)连续工作两周半,压力过大,今早出现心绞痛,故请求休假一天.今日不开Scrum Meeting,其余队员团队项目正常进行.

  3. java实验1实验报告(20135232王玥)

    实验一 Java开发环境的熟悉 一.实验内容 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 二.实验要求 1.没有Linux基础的同学建议先 ...

  4. Class 2 四则运算2的设计思路

    设计思路 1.主函数中有一个大的for循环,用户可以一直随机得到相应题目.在嵌套一个循环,其可以直接确定题目数量:定义两个变量,分别作为四则运算的两个运算数,用随机数函数得到两个数值:再利用随机生成函 ...

  5. 软工1816 · Beta冲刺(7/7)

    团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 协助完成安卓端的整合 完成安卓端的美化 协助制作宣传视频 接下来的计划 &am ...

  6. TensorFlow问题“Attempting to use uninitialized value”

    1.出现的问题: 对已经保存好的模型,在进行重载并继续训练的过程中出现了以下问题: 2.解决办法: 在查找了相关资料后,了解到,该错误是指在从tfrecord中读取数据时一些参数未被初始化,如果直接r ...

  7. Scrum 项目准备5.0

    1.团队成员完成自己认领的任务. 2.燃尽图:理解.设计并画出本次Sprint的燃尽图的理想线.参考图6. 3.每日立会更新任务板上任务完成情况.燃尽图的实际线,分析项目进度是否在正轨.    每天的 ...

  8. python基础(三)python数据类型

    一.数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需 ...

  9. Littleproxy的使用

    介绍 LittleProxy是一个用Java编写的高性能HTTP代理,它基于Netty事件的网络库之上.它非常稳定,性能良好,并且易于集成到的项目中. 项目页面:https://github.com/ ...

  10. CentOS下Neo4j安装教程

    本文记录一下在CentOS 6.7上,安装neo4j图数据库,本文安装的版本为neo4j-community-2.3.9-unix.tar.gz. 下载Neo4j安装包 使用wget命令获取Neo4j ...