题面

找到真正的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. Netty源码分析第5章(ByteBuf)---->第4节: PooledByteBufAllocator简述

    Netty源码分析第五章: ByteBuf 第四节: PooledByteBufAllocator简述 上一小节简单介绍了ByteBufAllocator以及其子类UnPooledByteBufAll ...

  2. Linux系列——安装双系统Ubuntu

    作为一个穷人,电脑破得不行却没钱换,怎么办呢,不如换个Ubuntu吧,没有Windows那么多后台应用,在我这台古董上稍微流畅一点. Linux有很多发行版,比较流行和适合入门的就是Ubuntu和De ...

  3. jenkins设置定时任务

    每次都手动的构建项目显然不够方便,有时候需要定时地执行自动化测试脚本.例如,每天晚上定时执行 pjenkins.py 文件来运行自动化测试项目. 设置定时任务 前面已经创建的 “python test ...

  4. 浅谈!DOCTYPE声明的作用?严格模式与混杂模式的区别?

    !DOCTYPE的作用: DOCTYPE是Document Type(文档类型)的缩写,<!DOCTYPE>声明必须是html文档的第一行,位于<html>标签之前.<! ...

  5. (第十周)Beta Review会议

    项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 Beta Review会议 时间:2016.11.14   10:00——11:30.13:30——15:00 ...

  6. MathExam作业

    作业 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estimate • ...

  7. MySQL课堂练习 20162315

    练习内容 1.参考教材相关代码,提交能连接到world的截图(有学号水印) 2.查询world数据库,获得人口超过500万的所有城市的列表. 3.查询world数据库,获得New Jersey州所有城 ...

  8. 团队冲刺——Five

    昨天: 司宇航:web项目如何部署到公网,把网址做成桌面图标链接,登录记住密码功能. 王金萱:注册和登录界面,用户数据库的信息录入. 马佳慧:做界面. 季方:处理爬虫数据,实现统计功能. 遇到的问题: ...

  9. Task 6.4 冲刺Two之站立会议9

    今天主要对昨天用户提出的意见加以改进,虽然有些不能轻易实现但是仍然查阅了很多资料.因为他目前可以实现实时通信的功能,而我们想要在这个基础上实现临时的视频聊天的功能,但是时间有点紧迫,所以还没有实现.

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

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