[BZOJ3053][KD树]The Closest M Points

SMRATS(一) SMARTS+PPO baseline运行教程 python类方法 class Agent: @classmethod def from_function() python typing 含义 为防止弱类型python出现忘记变量类型的问题,python3.5及之后版本增加了对应的类型提示。 输入和输出类型 函数接受并返回一个字符串,注释像下面这样: def greeting(name: str) -> str: return 'Hello ' + name 常用的typing类型 int,long,float: 整型, 阅读详情
题意

给定k维空间的n个点,每次询问给出一个点,求于给出的点距离最小的m个点


KD树标准模板题

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#define N 100010

using namespace std;

typedef pair<int,int> pairs;

inline int abs(int a){return a<0?-a:a;}
inline int sqr(int x){return x*x;}

int id,K;
struct node{
  int a[6],mn[6],mx[6],g,l,r;
  int &operator [](int x){
    return a[x];
  }
  friend bool operator <(node a,node b){
    return a[id]<b[id];
  }
  inline void print(){
    printf("%d",a[1]);
    for(int i=2;i<=K;i++) printf(" %d",a[i]);
    putchar('\n');
  }
}Point[N];

priority_queue<pairs> Q;

struct kd_tree{
  node p[N];
  int rt,q[N],cnt;
  inline void updat(int x){
    for(int i=1;i<=K;i++){
      p[x].mn[i]=p[x].mx[i]=p[x][i];
      if(p[x].l)
    p[x].mn[i]=min(p[x].mn[i],p[p[x].l].mn[i]),
      p[x].mx[i]=max(p[x].mx[i],p[p[x].l].mx[i]);
      if(p[x].r)
    p[x].mn[i]=min(p[x].mn[i],p[p[x].r].mn[i]),
      p[x].mx[i]=max(p[x].mx[i],p[p[x].r].mx[i]);

    }
  }
  inline int build(int l,int r,int t){
    if(l>r) return 0; id=t;
    int mid=l+r>>1;
    nth_element(Point+l,Point+mid,Point+r+1);
    p[mid]=Point[mid];
    p[mid].l=build(l,mid-1,t%K+1);
    p[mid].r=build(mid+1,r,t%K+1);
    updat(mid); return mid;
  }
  inline int dist(int g,node x){
    int r=0;
    if(g==0) return 1<<30;
    for(int i=1;i<=K;i++) r+=sqr(p[g][i]-x[i]);
    return r;
  }
  inline int wnt(int g,node x){
    int r=0;
    for(int i=1;i<=K;i++){
      if(p[g].mn[i]>x[i]) r+=sqr(p[g].mn[i]-x[i]);
      if(p[g].mx[i]<x[i]) r+=sqr(p[g].mx[i]-x[i]);
    }
    return r;
  }
  void query(int g,node x){
    if(!g) return ;
    int d=dist(g,x),dl=wnt(p[g].l,x),dr=wnt(p[g].r,x);
    if(d<Q.top().first) Q.pop(),Q.push(pairs(d,g));
    if(dl<dr){
      if(dl<Q.top().first) query(p[g].l,x);
      if(dr<Q.top().first) query(p[g].r,x);
    }
    else{
      if(dr<Q.top().first) query(p[g].r,x);
      if(dl<Q.top().first) query(p[g].l,x);
    }
  }
  inline void query(node x,int w){
    for(int i=1;i<=w;i++) Q.push(pairs(1<<30,0));
    query(rt,x); cnt=0;
    while(!Q.empty()){
      q[++cnt]=Q.top().second;
      Q.pop();
    }
    printf("the closest %d points are:\n",w);
    for(int i=cnt;i;i--) p[q[i]].print();
  }
}KDT;

int n,m;

int main(){
  while(~scanf("%d%d",&n,&K)){
    for(int i=1;i<=n;i++)
      for(int j=1;j<=K;j++) scanf("%d",&Point[i][j]);
    KDT.rt=KDT.build(1,n,1);
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
      node x; int y;
      for(int i=1;i<=K;i++) scanf("%d",&x[i]);
      scanf("%d",&y);
      KDT.query(x,y);
    }
  }
}
100 道大数据开发技术原理与实战面试宝典(必过答案详细解析)I 在数字化浪潮席卷全球的今天,大数据开发工程师已成为企业数字化转型的核心力量。无论是互联网巨头的用户行为分析,还是金融机构的风险控制,亦或是智慧城市的数据中枢,都离不开大数据技术的支撑。然而,面对BAT等头部企业严格的面试要求,候选人不仅需要掌握扎实的理论基础,更需具备将技术落地的实战能力。本文基于历年高频面试题与企业真实场景需求,梳理100道必考题目,涵盖基础概念、框架原理、算法设计、性能优化等核心领域,助你构建完整的知识体系,从容应对面试挑战。 阅读详情

相关推荐

跨厂商网络设备的RADIUS认证:Windows NPS的兼容性与最佳实践

本文详细探讨了Windows NPS在多厂商网络环境中的RADIUS认证实践,特别针对华为、华三、思科等主流设备的兼容性问题提供解决方案。从基础配置到高级优化,涵盖VSA属性映射、认证协议选择及安全加固措施,帮助企业实现统一身份认证并提升网络安全性。

weixin_29213827的博客 420

BZOJ - 1941 Hide and Seek (kd树)

题目链接 kd树模板题,求二维空间上的最远点/最近点。 对所有点建立kd树,分别查询每个点即可。单次查询期望时间复杂度$O(logn)$ 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=5e5+10,inf=0x3f3f3f3f; 5...

weixin_30951231的博客 128

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化

大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系

weixin_33443333的博客 351

bzoj 2648 (kdtree模板题)

这天,SJY显得无聊。在家自己玩。在一个棋盘上,有N个黑色棋子。他每次要么放到棋盘上一个黑色棋子,要么放上一个白色棋子,如果是白色棋子,他会找出距离这个白色棋子最近的黑色棋子。此处的距离是 曼哈顿距离 即(|x1-x2|+|y1-y2|) 。现在给出N   Input 第一行两个数 N M 以后M行,每行3个数 t x y 如果t=1 那么放下一个黑色棋子 如果t=2 那么放下

黑码 695

给排水工程师的SWMM初体验:从软件界面到第一个简单模型的保姆级上手教程

本文为给排水工程师提供SWMM软件的保姆级上手教程,从界面解析到创建第一个简单模型,详细介绍了SWMM的核心功能和操作步骤。通过30分钟的实践指导,帮助新手快速掌握雨水管网建模的基本技能,提升工作效率。

weixin_28736355的博客 323

【低空经济】森林火情高精度监测与早期预警无人机巡护方案

在全球范围内,森林火灾已成为一个严重的生态和社会问题。它不仅对自然生态系统造成了毁灭性的影响,还对人类的生命财产安全构成了极大的威胁。根据国际森林发展组织的统计,全球每年因森林火灾造成的经济损失高达数百亿美元,甚至在某些年份,火灾损失占到某些国家国民经济总量的相当一部分。因此,开展高效的森林火情监测与早期预警工作显得尤为重要。随着科技的发展,无人机作为新兴的监测工具,以其高效、灵活和经济的特点在森林火灾监测领域展现出了巨大的潜力。

2502_92579126的博客 1211

【HDU】5994 Generator and Monitor【KD树】

题目链接:【HDU】5994 Generator and Monitor看懂题就会做系列,模板题。#include <bits/stdc++.h> using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 200005 ; const int

poursoul 1382

MEG预处理-Brainstorm

Brainstorm下载和安装 去Brainstorm官网进行下载:打开网页后,点击左侧Download;在跳出来的界面中进行简单的注册,注册完成后可以进行下载 解压后得到“brainstorm3”的文件夹,里面包含Brainstorm工具包的所有文件,把这个文件夹放在某个路径如"E:\matlab_tools\brainstorm3"即可 同样在某个路径建立空的文件夹命名为:brainstorm_db用于工具包运行过程中自动存储生成的文件,所以这个文件中生成的数据不要手动移动删除 在Matlab中,把.

AxeChen的博客 6118

hdu4317(kd树模板)

#include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;cstring&gt; #include&lt;cmath&gt; #include&lt;vector&gt; #include&lt;queue&gt; #include&lt;set&gt; #defin

blaze_jack 548

【WRF模拟】保存wrf输出文件到指定目录+仅输出指定空间域/变量文件

修改wrf命令以更改指定输出文件目录等

WW、forever的博客 543

lammps案例:堆垛层错能的计算

大家好,我是小马老师。 本文介绍如何使用lammps计算晶体的堆垛层错能。 正常晶体中的原子按照一定的规律排列,原子面按ABCABC……的顺序排列,如下图所示: 当某个原子面被抽出后会形成堆垛层错,如图中的蓝色原子层被抽出,原子面排列变为ABCBCA……: 可通过计算堆垛层错能形成前后的能量差计算堆垛层错能,计算公式为: E0为初始能量 Ef为删除一个原子面后的能量 A为界面面积 下面分享一个lammps计算堆垛层错能的in代码,本代码由Richard Glaze完成,本文稍作修改并进行了注释,以供初

lammps_jiayou的博客 5434

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

    Code: //洛谷 P4148 简单题 KD-Tree 模板题 #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt; #include &lt;string&gt; using namespace std; void setIO(string a){ freopen((a+...

EM LGH 433

论文翻译:arxiv-2023 Do-Not-Answer: A Dataset for Evaluating Safeguards in LLMs

随着大型语言模型(LLMs)的快速发展,出现了新的、难以预测的有害能力。这要求开发者能够通过评估“危险能力”来识别风险,以便负责任地部署LLMs。在这项工作中,我们收集了第一个开源数据集,用于评估LLMs中的安全保障,并以低成本部署更安全的开源LLMs。我们的数据集经过策划和筛选,只包含负责任的语言模型不应遵循的指令。我们注释并评估了六个流行的LLMs对这些指令的响应。基于我们的注释,我们继续训练了几个类似BERT的分类器,并发现这些小型分类器在自动安全评估上能够取得与GPT-4相当的成果。

CSPhD-winston的博客 1131

bzoj 3053 HDU 4347 : The Closest M Points kd树

bzoj 3053 HDU 4347 : The Closest M Points kd树 题目大意:求k维空间内某点的前k近的点。 就是一般的kd树,根据实测发现,kd树的两种建树方式,即按照方差较大的维度分开(建树常数大)或者每一位轮换分割(询问常数大),后者更快也更好些,以后就果断写第二种了。 #include<iostream> #include<...

alex151194310的博客 158

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[bzoj3053][kd树]The Closest M Points

3053: The Closest M PointsTime Limit: 10 Sec Memory Limit: 128 MB Submit: 1035 Solved: 363 [Submit][Status][Discuss] DescriptionThe course of Software Design and Development Practice is objectiona

Gzb1128的栖息地 302

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【BZOJ3053】The Closest M Points-KD树

测试地址:The Closest M Points 题目大意:kkk维空间里有nnn个点,qqq次询问,每次询问这nnn个点中与某个点的欧式距离前mmm小的是哪些。 做法: 本题需要用到KD树。 KD树的一道比较复杂的模板题,复杂度我也不懂,好像是随机情况下O(nlog⁡n)O(n\log n)O(nlogn)?总之能过。于是KD树就照常建,在询问的时候,答案用一个堆来做会快一点。里面会涉及到求一...

Maxwei_wzj的OI世界 318

【BZOJ 3053】 The Closest M Points

kd-tree求前k近邻~ (附kd-tree注意事项)

Regina8023 2684

bzoj 3053 The Closest M Points

bzoj 3053 The Closest M Points 钱限题.题面可以看这里. 用 \(kd-tree\) 来做. \(k\) 维空间找一次最近点,时间复杂度大致为 \(O(kn^{1-\frac 1 k})\) .讲题人表示这个的时间复杂度可能是 \(fAKe\) 的...但一般情况下都不会去卡 \(kd-tree\) ,而且前提是 \(std\) 不是 \(kd-tree\) . ...

weixin_30782331的博客 152

bzoj3053 The Closest M Points

题目链接 题意 思路 调到哭系列 其实就是kd-tree的模板题。用堆维护出距离最小的m个点。然后在\(kd-tree\)上查询。 这一个小地方从上午9点调到下午4点半。。。。。真的快气哭了。。。 代码 //调的心累呀!!!! /* * @Author: wxyww * @Date: 2019-06-13 09:57:42 * @Last Modified time: 2019...

diecimu4798的博客 140

【BZOJ3053】The Closest M Points KDtree 好模板一只【数组版!!!】

只写过二维平面上的kdt?那你的模板够用么?!!

辗转山河弋流歌 1389

BZOJ 3053(The Closest M Points-N维KD_Tree)

3053: The Closest M Points Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 442  Solved: 173 [Submit][Status][Discuss] Description The course of Software Design and Development Practice is obje

nike0good |Oier&ACMer | 熟能生巧 1745

The Closest M Points BZOJ 3053

The Closest M Points 【问题描述】 软工学院的课程很讨厌!ZLC同志遇到了一个头疼的问题:在K维空间里面有许多的点,对于某些给定的点,ZLC需要找到和它最近的m个点。 (这里的距离指的是欧几里得距离:D(p, q) = D(q, p) = sqrt((q1 - p1) ^ 2 + (q2 - p2) ^ 2 + (q3 - p3) ^ 2 + ... + (q...

weixin_30408309的博客 106

【BZOJ】【3053】The Closest M Points

KD-Tree   题目大意:K维空间内,与给定点欧几里得距离最近的 m 个点。   KD树啊……还能怎样啊……然而扩展到k维其实并没多么复杂?除了我已经脑补不出建树过程……不过代码好像变化不大>_>   然而我WA了。。。为什么呢。。。我也不知道……   一开始我的Push_up是这么写的: inline void Push_up(int o){ rep(...

weixin_30478619的博客 118

[BZOJ3053]The Closest M Points(kd-tree+堆)

题目描述传送门题解比较裸的kd-tree 每一次询问维护一个大小为m的优先队列(大根堆),查询的时候和堆顶比较 最后堆中的元素就是答案代码#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> using namespace std; #de

zyf2000 887

[BZOJ3053]The Closest M Points(KD-tree+堆)

记得要清零啊啊啊啊啊啊啊啊

薇小薇 439

[KD TREE] BZOJ 3053 The Closest M Points

k维的kdtree啊 怎么说呢 kdtree就是各种剪枝啊 #include #include #include #include #define inf 2147483647 using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p

雯舞 533

BZOJ3053 The Closest M Points

裸的KD-tree,还是在估计要不要进入子树的时候判断一下就好了,剩下都一样 判断的方法就是看现在答案个数是否小于k,和答案是否会经过分割线。 1 /************************************************************** 2 Problem: 3053 3 User: rausen 4 ...

weixin_30617561的博客 115
上一篇: [BZOJ2082][Poi2010][质因数分解][乱搞]Divine divisor
下一篇: [BZOJ1006][HNOI2008][弦图的最小点染色]神奇的国度
LowestJN
博客等级 码龄10年 76粉丝 422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值