KD-Tree模板

kdtree模板 kdtree模板,采用c++编写! 立即下载

.
题:Bzoj2850
参考资料
好像其实挺好写的(就是慢了很多很多),复杂度是 O ( k n 1 − 1 k ) O(kn^{1-\frac{1}{k}}) O(kn1−k1​)
只能算是一个“分块级别”的暴力,离线段树这种还差很多

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 50010
#define LL long long
using namespace std;
struct P{ int x,y,v; } w[N];
struct tree{
	int U,D,L,R,l,r;
	int x,y,v; LL S;
} s[N];
inline bool cx(P a,P b){ return a.x<b.x; }
inline bool cy(P a,P b){ return a.y<b.y; }
inline void gmx(int& a,int b){ a<b?a=b:0; }
inline void gmn(int& a,int b){ a>b?a=b:0; }
inline void merge(int x){
	s[x].L=s[x].R=s[x].x;
	s[x].U=s[x].D=s[x].y;
	int y; s[x].S=s[x].v;
	if(y=s[x].l){
		s[x].S+=s[y].S;
		gmx(s[x].R,s[y].R);
		gmx(s[x].D,s[y].D);
		gmn(s[x].L,s[y].L);
		gmn(s[x].U,s[y].U);
	}
	if(y=s[x].r){
		s[x].S+=s[y].S;
		gmx(s[x].R,s[y].R);
		gmx(s[x].D,s[y].D);
		gmn(s[x].L,s[y].L);
		gmn(s[x].U,s[y].U);
	}
}
inline int build(int l,int r,int o){
	if(l>r) return 0;
	int m=l+r>>1;
	nth_element(w+l,w+m,w+r+1,o?cx:cy);
	s[m]=(tree){0,0,0,0,build(l,m-1,!o),build(m+1,r,!o),w[m].x,w[m].y,w[m].v,0};
	merge(m); return m;
}
int n,m,rt,A,B,C; //querys
inline int c(int x,int y){ return A*x+B*y<C; }
inline int Q(tree x){ return c(x.L,x.U)+c(x.R,x.U)+c(x.L,x.D)+c(x.R,x.D); }
inline LL query(tree& x,int q){
	if(q==4) return x.S;
	LL A=c(x.x,x.y)?x.v:0;
	int y=x.l,t;
	if(y&&(t=Q(s[y]))) A+=query(s[y],t);
	y=x.r;
	if(y&&(t=Q(s[y]))) A+=query(s[y],t);
	return A;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) scanf("%d%d%d",&w[i].x,&w[i].y,&w[i].v);
	rt=build(1,n,0);
	for(;m--;){
		scanf("%d%d%d",&A,&B,&C);
		printf("%lld\n",query(s[rt],Q(s[rt])));
	}
}
Data+AI新玩法:Text2SQL让数据查询变得如此简单! 你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。 阅读详情

相关推荐

dq轴坐标系下的电路方程

dq轴坐标系下的电路方程 dq轴坐标系是一种常见的电路方程,但是再dq轴坐标系下电路元件的电压电流dq轴存在一定的耦合,本文针对三相电路推导了dq轴坐标系下的电路电路方程进行一个推导,首先先列出来派克变换的公式 派克变换 [AdAqA0]=23[cos⁡(θ)cos⁡(θ−2π/3)cos⁡(θ+2π/3)−sin⁡(θ)−sin⁡(θ−2π/3)−sin⁡(θ+2π/3)1/21/21/2][AaAbAc]\left[\begin{array}{c}A_d\\A_q\\A_0 \end{array}\ri

Mr.Young的博客 1万+

bzoj 2852: 强大的区间 辗转相除

2852: 强大的区间 Time Limit: 5 SecMemory Limit: 128 MBSubmit: 45Solved: 12[Submit][Status][Discuss] Description curimit很喜欢区间,最近发现了一种很强大的区间。 curimit发现有的区间虽小,比如 (1.99998, 2.000001),但是其中却包含了一...

alex151194310的博客 320

距离多普勒谱(RD谱)绘制方法及理解

RD谱是信号处理领域常用的图形。原始信号往往是一维时域序列,如何将其二维化,并进行变换生成RD谱呢?由于刚刚接触,查阅了网络上、老师手里的资料,发现RD谱的绘制方法并不统一,有些存在一定问题。在此,将心得体会记录下来。

mddh_123的博客 3万+

类欧几里得算法与推导

总起类欧几里得主要是模仿欧几里得函数的过程,求解一些问题,时间复杂度与欧几里得一致。我们这里主要是要多弄一个j,然后和i交换主体,再把i消去,达到转移为新状态的目的。代码目前懒得写,反正式子是推两次了,很正确

ZLTJohn的博客 2140

STM32鱼塘水质监测系统设计与实现

物联网技术在农业领域的应用正逐步深入,其中传感器网络作为关键基础设施,通过实时数据采集与传输实现环境监测。基于STM32微控制器的嵌入式系统因其高性能和低功耗特性,成为物联网终端设备的理想选择。该系统通过DS18B20水温传感器、PH传感器和浊度传感器组成的多参数检测网络,配合4G通信模块实现水质数据的远程监控。在农业物联网场景中,这种解决方案不仅大幅降低了传统人工检测的成本,更能通过实时预警有效预防养殖损失。本文介绍的鱼塘水质监测系统正是这一技术的典型应用,展示了如何通过STM32和常见传感器构建高性价比

weixin_42173218的博客 620

ORB-SLAM3在windows11下的编译使用

近期在学习SLAM,想部署一下ORB-SLAM3,但是自己电脑是win11系统,因此就想着在win11上部署一下。但是网上看了一些教程,有一些博客,但是可能不适合我这种情况把,就很纠结。先说下结果,配置成功,过程极其痛苦。

weixin_44457768的博客 6095

0205听课笔记2

Stern-Brocot Tree (SB树) 例题:BZOJ2852:给两个有理数 a,ba,ba,b, 求最小的正整数 kkk, 使得 (ak,bk)(ak, bk)(ak,bk) 里有整数。aaa, bbb 整数部分不超过 2312^{31}231, 小数位数不超过 300300300 位。 莫比乌斯反演 数论函数:定义域在正整数域上的函数。 积性函数:(a,b)=1(a...

Ark 426

扣子Coze触发器使用指南:实现工作流定时执行的完整教程

Coze平台触发器功能详解:定时触发器配置指南 摘要:Coze平台的触发器是实现自动化任务的核心组件,其中定时触发器能够按预设时间自动执行工作流。本指南介绍了定时触发器的配置方法,包括每日、每周、每月及Cron表达式等多种时间设置方式,以及如何关联工作流执行具体任务。文章还提供了健身提醒等实用案例,并涵盖了触发器调试、发布及常见问题解决方案。通过合理配置定时触发器,用户可以轻松实现各类自动化任务,如定时发送消息、数据采集等,大幅提升工作效率。

互联网架构师笔记 1922

K-d Tree 模板

typedef long long LL; typedef pair PII; typedef pair pii; const int maxn = 1000005; //点的数量 const int maxD = 2; //维数,根据题目维数修改此处 const int maxM = 12; const LL INF = 4611686018427387903LL; int now; s

Eason的博客 2363

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

ABAP GIT 作用介绍

总结起来,ABAPGit 是一个强大的工具,它通过将 SAP ABAP 项目与 Git 版本控制系统集成,大大提高了代码管理的效率和团队协作的质量。在 ABAPGit 出现之前,ABAP 代码的版本控制和团队之间的协作主要依赖于手工操作或者是 SAP 自带的版本控制工具,这些方式效率低下,且难以实现高效的代码管理。使用 ABAPGit,SAP 项目团队不仅可以提高代码管理的效率和质量,还可以通过 Git 的强大功能实现高效的团队协作和代码审查。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 838

Kd-tree原理与实现

数据应用当中,最近邻查询是非常重要的功能。不论是信息检索,推荐系统,还是数据库查询,最近邻查询(Nearst Neighbor Search)可谓无处不在。它要实现的是帮助我们找到数据中和查询最接近的一个或多个数据条目(前者叫NN search, 后者也叫kNN),其实本质上是一样的,我在这篇博客中讲的Kd-tree主要是针对NN问题的。 其实,这种问题本来是很容易解决的,只要设计好了数据相似度

guoziqing506的博客 2万+

基于MATLAB的奇异谱分析(SSA)算法详解

本文详细介绍了基于MATLAB的奇异谱分析(SSA)算法。文章首先阐述了SSA的基本概念、历史发展及其与传统信号分析方法的对比优势,指出SSA作为一种非参数、非线性时间序列分析方法,特别适合处理非平稳信号。随后详细解析了SSA算法的核心原理与数学模型,包括轨迹矩阵构建、奇异值分解、分组与重构四个关键步骤。文章还提供了完整的MATLAB实现框架和代码解析,涵盖参数检查、轨迹矩阵构建、SVD分解、分组策略和重构过程。最后,通过信号分解、去噪和预测三个应用案例展示了SSA的实际效果。

qq_42212808的博客 168

KD-Tree一系列模板题

kd树模板题刷题记录

Zero's World 1283

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

KD-Tree 学习小记+模板

Preface 听说KD树实在是个大神器 可以解决多维空间多维偏序点权和,可以求某个点的空间最近最远点 就二维平面上的来说,复杂度在O(nlog⁡n)O(n\log n)O(nlogn)到O(nn)O(n\sqrt n)O(nn​)不等 嫌KD树不平衡了还可以来一个替罪羊树式的暴力重构 再也不用担心写不出树套树了!(狗头) Text 这是个什么东西呢? 在一维数轴上,可以简单的比较两个值的大小,我...

Never give in. 346

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

KD-Tree 初学(模板+HDU 4347)

        KD_Tree的话,一年半以前,那时候翻我们学校给的模板翻到看了,上面写的"by edward_mj"。这个ID浙大的人应该很熟悉,13-14年连续两年带队打进WF。这里我可以吹一下,edward_mj可是和我同一个高中毕业的哟~当时也问了一下学长,学长说KD树是他写的最溜的一个数据结构之一。        直到这几天我才有时间来学学KD树。所谓KD树,顾名思义k-dimensio...

alpc_qleonardo 2592

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

不可视境界线(inv) KD-Tree 模板

这个题可以转化一下。 dp [ i ] = min ( dp [ i ] , sqrt ( dp [ j ] * dp [ j ] + dis ( i , j ) ) ) i点 ( 0 , ai1 , ai2 ) j点 ( dpj , aj1 , aj2) 就是求 i 点之前距离 i 最近的点。 其中: k=1时是二维坐标。 k=2时是三维坐标。 #include<iostream&gt...

_Griefs 1589

【模板】很强的KD-Tree模板

之所以说超强,是因为这个模板又短(我见过最短的kdtree)跑得又快(我用来写了某道题在vj上跑了第一)也易于修改(之前拿某个大板子来改,不仅不好改而且改了跑得贼慢)。无需初始化任何变量,直接build + query! 其实还有优化空间,把取模操作都换成手动的会更快。 HDU4347 -TheClosesetMPoints 1 #include<queue...

weixin_30487317的博客 225

洛谷 P4148 简单题 KD-Tree 模板题

Code: //洛谷 P4148 简单题 KD-Tree 模板题 #include <cstdio> #include <algorithm> #include <cstring> #include <string> using namespace std; void setIO(string a){ freo...

weixin_30300523的博客 99

KD-tree模板

作为一个骗分神器,kdtree可以解决许多计算几何或者二维数点(代替二维数据结构)的问题 模板题:每个点(x,y,z)坐标(x,y),权值(z) 每个询问A,B,C,求满足Ax+ByCAx+By的权值和 #include #include #include #define fo(i,a,b) for(int i=a;i #define N 501000 #define ll long lon

Jacky35 658

模板_KD-Tree

struct Node{int d[2],mi[2],ma[2],ch[2];}p[N<<1],now; int n,m,D,cnt,root,ans; inline int cmp(Node a,Node b){return a.d[D]<b.d[D];} inline void push_up(int o){ p[o].mi[0]=min(p[o].d[0],min(p[lc].mi[0

BeiYu 945

洛谷 P4148:简单题 ← KD-Tree模板题

● KD-Tree 作为一种二分查找树,由 Jon Louis Bentley 发明。所谓 KD-Tree,即 Multidimensional Binary Search Tree 的简称,其中的 K表示数据空间的维度。KD-Tree 高效支持高维空间的最近邻搜索、空间搜索,因此深入了解 KD-Tree 的原理以及底层实现,对机器人或无人驾驶领域的从业者来说,意义非凡。

hnjzsyjyj的专栏 1237

【bzoj2626】JZPFAR kd-tree

复习一下kd-tree模板,顺便学点新东西。 #include #include #include #include #include #include #include #define maxn 100010 using namespace std; int cur; struct yts1 { long long dis; int id; }; bool operato

Oxer的专栏 817

bzoj2648&&2716 kd-tree模板

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read() { char ch=getchar();int f=0,x=1; while(ch<'0'||ch>'9'){if(ch=='-') x=-1;ch=getchar();}

mengbi_er的博客 460

bzoj2648 SJY摆棋子【KD-tree模板】

解题思路: KD-tree是一种维护多维空间中点的数据结构。 讲解详见http://blog.youkuaiyun.com/jiangshibiao/article/details/34144829。 本题中的操作都有涉及。 #include&lt;bits/stdc++.h&gt; #define ll long long using namespace std; int getint() {...

cdsszjj的博客 336

HDU The Closest M Points(KD-tree模板题)

题目链接HDU 4347 The Closest M Points分析kd-tree模板题AC code#include<bits/stdc++.h> #define pb push_back #define mp make_pair #define PI acos(-1) #define fi first #define se second #define INF 0x3f3f3f3f #defi

taotao 的大学墓志 876
上一篇: Bzoj2434 阿狸的打字机
下一篇: 计算几何模板
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值