题面

找到真正的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. smash:一个类unix内核

    前言 每一个蹩脚的C++程序员都有一颗做操作系统内核的心.我从大学毕业开始就对操作系统内核感兴趣,将其看作是术之尽头,可惜那时候一直在无忧无虑的忙着玩网游,也就搁置了.随着时间的推移,逐渐就将其淡忘了 ...

  2. 搭建 Digital Ocean 服务器

    作为程序员,搭建属于自己的服务器可以部署自己的网站,可以配置代理***,了解国际前沿科技:一些高性能的服务器还可以完成一些云计算.深度学习模型的训练任务. DigitalOcean 服务启动 注册 D ...

  3. Qt 5.x 开发技巧

    出现unresolved external symbol "public: __thiscall Dialog::Dialog(class QWidget *) 或类似不太合理的错误时,可以 ...

  4. dp算法之有代价的最短路径

    题目:有代价的最短路径 题目介绍:如下图所示,现在平面上有N个点,此时N=7,每个点可能和其他点相连,相连的线有一定权值,求出从0点到N-1点的消耗权值的最小值. 分析:用动态规划的思路来解决,每一点 ...

  5. XSS(Cross Site Script)

    类型一:反射型XSS 简单地把用户输入的数据“反射”给浏览器.也就是说,黑客需要诱使用户“点击”一个恶意链接,才能攻击成功. 类型二:存储型XSS 把用户输入的数据“存储”在服务器端.这种XSS具有很 ...

  6. chattr和lsattr命令详解

    基础命令学习目录首页 原文链接:http://www.ha97.com/5172.html PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chat ...

  7. Nginx 配置优化

    一.开启Gzip 1.参数 gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_comp_level 2;gzip_types text/plain ...

  8. 前端_CSS

    目录 CSS语法 CSS的四种引入方式 CSS选择器 CSS属性操作 补充 示例(一些小模板) CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 1 2 3 4 5 6 7 ...

  9. pycharm 2017注册码

    1.在浏览器的地址栏输入:http://idea.lanyus.com/,该网址,无需修改用户名,点击获取注册码.复制该注册码,粘贴在注册界面的Activation code的输入框中,点击 ok 该 ...

  10. Task 6.4 冲刺Two之站立会议5

    在完成主界面和聊天窗口的连接之后,今天对聊天界面在以前的基础上添加了很多东西,比如说对于文件传输和文字通信时的表情包的添加以及抖动窗口的设置等等一一系列的功能.我完成的是文字通信这一部分的内容.