解题:CQOI 2017 老C的任务
找到真正的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的任务的更多相关文章
- 解题:CQOI 2017 老C的方块
题面 看起来很像网络流的二分图套路题,然后我们大力观察(题目定义的相邻我用引号括起来,应该能看懂) 发现“相邻”的一对方格如果各自连着一个一个方格就gg了,于是对于所有这些“相邻”的方格,我们有两种选 ...
- 解题: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 而我们两边 ...
- 解题:CQOI 2017 小Q的棋盘
题面 由树的结构我们可以知道,最终要么是连一条(最长的)链都没走完,要么是走了一些点最后走了最长的链.为什么总是说最长的链呢,因为在树上这样走的过程中(最后不要求返回的话)除了一条链都会被走两次,显然 ...
- NOIP2004 解题报告
第一题:津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里, ...
- PHP代码安全杂谈
虽然PHP是世界上最好的语言,但是也有一些因为弱类型语言的安全性问题出现.WordPress历史上就出现过由于PHP本身的缺陷而造成的一些安全性问题,如CVE-2014-0166 中的cookie伪造 ...
- BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 2818: Gcd Time Limit: 10 Sec Memory Limit ...
- HDU 4456 Crowd
Crowd Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 时间就是金钱HNCOI2000(最短路)
时间就是金钱HNCOI2000 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! 人们总是选时间最短或费用最低的路线 例如, ...
- 【DTOJ】2704:数字互换
DTOJ 2704:数字互换 解题报告 2017.11.11 第一版 ——由翱翔的逗比w原创 题目信息: 题目描述 输入两个数作为交换数,输出已交换顺序后的两个值. 输入 两个整数,空格隔开 输出 ...
随机推荐
- AES128加密算法完整实现
概述 原本想把自己AES加密算法的整个实现过程给详细复述下来,分享给想学习的同学,也方便自己复习,但后来发现该工作量太大,加上作业太多没有过多的时间去写.所以就想把自己在学习的过程中多遇到的好的文章进 ...
- python os.walk详解
os模块大全详情 os.walkos.walk方法,主要用来遍历一个目录内各个子目录和子文件. os.walk(top, topdown=True, onerror=None, followlinks ...
- Servlet各版本web.xml的头文件配置模板
原文: http://www.codeweblog.com/servlet%E5%90%84%E7%89%88%E6%9C%ACweb-xml%E7%9A%84%E5%A4%B4%E6%96%87%E ...
- 在虚拟机下安装Ubuntu
目录: 1.安装虚拟机 2.在虚拟下安装Ubuntu 本文将按照目录分两步来讲一下在虚拟机下安装Ubuntu.第一步是安装虚拟机,第二步是在虚拟机下安装Ubuntu. 安装虚拟机 下载虚拟机链接以及激 ...
- TeamWork#3,Week5,Scrum Meeting 11.13
最近我们根据之前发现的问题, 补充了相关知识,正在努力修复出现的问题,调整程序结构. 成员 已完成 待完成 彭林江 之前没有考虑到网站信息更新导致的程序可变性,正在调整爬虫程序结构 更换爬虫结构 郝倩 ...
- YQCB绩效表
标准 队员 工作质量 20% 工作态度 20% 工作量 30% 工作难易程度 20% 团队意识 10% 总分 陈美琪 17 18 28 19 9 91 张晨阳 16 16 25 17 9 83 刘昭为 ...
- Go going软件NABCD
N (Need 需求):gogoing项目目前打算做得是一个基于石家庄铁道大学在校大学生对于短期节假日出行旅游的指南.次关键的定义为“简单”.“简单”则体现在我们的软件使用简单.方便,以及界面的简洁 ...
- ubuntu16.04+opencv3.0.0
基本步骤: http://blog.csdn.net/xuezhisdc/article/details/48691797 报错: http://www.jianshu.com/p/68ac83436 ...
- WinForm中DataGridView的快速查找及将指定行显示到第一行
/// <summary> /// 快速在已绑定的列表查询车辆 /// </summary> /// <param name="sender"> ...
- 理解jquery on 委托事件的机制
前两天做了一个点击任意位置,都能关闭菜单的功能,因为菜单里面的每一个a,的点击事件都是用on绑定的.所以在阻止冒泡的时候不管用,今天特意来理解一下on的机制 on 是委托事件,利用的就是冒泡原理 $( ...