博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KDTree 板子
阅读量:5892 次
发布时间:2019-06-19

本文共 2472 字,大约阅读时间需要 8 分钟。

从杨哥哪里偷的板子, 存一下。

#include
using namespace std;#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);#define LL long long#define ULL unsigned LL#define fi first#define se second#define pb push_back#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define lch(x) tr[x].son[0]#define rch(x) tr[x].son[1]#define max3(a,b,c) max(a,max(b,c))#define min3(a,b,c) min(a,min(b,c))typedef pair
pll;const int inf = 0x3f3f3f3f;const int _inf = 0xc0c0c0c0;const LL INF = 0x3f3f3f3f3f3f3f3f;const LL _INF = 0xc0c0c0c0c0c0c0c0;const LL mod = (int)1e9+7;const int N = 5e4 + 100;int n,k,idx;struct Node{ int f[5]; bool operator <(const Node&rhs)const{ return f[idx]
>q;struct kdtree{ bool vis[N<<2]; Node data[N<<2]; void Build(int l, int r, int rt, int dep){ if(l > r)return ; vis[rt] = 1; vis[rt<<1] = vis[rt<<1|1] = 0; idx = dep%k; int m = l+r >> 1; nth_element(a+l, a+m, a+r+1); data[rt] = a[m]; Build(l, m-1, rt<<1, dep+1); Build(m+1, r, rt<<1|1, dep+1); } void Query(Node p, int m, int rt, int dep){ if(!vis[rt]) return ; pair
cur(0,data[rt]); for(int i = 0; i < k; ++i) cur.fi += (cur.se.f[i] - p.f[i]) * (cur.se.f[i] - p.f[i]); int dim = dep % k; bool flag = 0; int x = rt << 1,y = rt << 1 | 1; if(p.f[dim] >= data[rt].f[dim]) swap(x,y); if(vis[x]) Query(p, m, x, dep+1); if(q.size() < m) q.push(cur),flag = 1; else{ if(cur.fi
< n; ++i) for(int j = 0; j < k; ++j) scanf("%d", &a[i].f[j]); kd.Build(0,n-1,1,0); int t; scanf("%d", &t); while(t--){ Node p; for(int i = 0;i < k; ++i) scanf("%d", &p.f[i]); int m; scanf("%d",&m); while(!q.empty()) q.pop(); kd.Query(p,m,1,0); printf("the closest %d points are:\n", m); Node ans[25]; for(int i = 0; !q.empty(); ++i){ ans[i] = q.top().se; q.pop(); } for(int i = m - 1; i >= 0; --i) for(int j = 0; j < k; ++j) printf("%d%c", ans[i].f[j], " \n"[j==k-1]); } } return 0;}
View Code

 

转载于:https://www.cnblogs.com/MingSD/p/10460836.html

你可能感兴趣的文章
ssh 安装笔记
查看>>
游戏音效下载网站大全
查看>>
angular $resouse服务
查看>>
实验五
查看>>
文法分析
查看>>
记那次失败了的面试
查看>>
程序包+创建包规范+创建包体+删除程序包
查看>>
3-继承
查看>>
java中如何实现类似goto的作法
查看>>
海归千千万 为何再无钱学森
查看>>
vue2.0 仿手机新闻站(六)详情页制作
查看>>
FreeRTOS的内存管理
查看>>
JSP----九大内置对象
查看>>
The Z-Index CSS Property: A Comprehensive Look | Smashing Coding
查看>>
Java中HashMap详解
查看>>
Office版本差别引发的语法问题
查看>>
Apache——访问控制
查看>>
web前端(10)—— 浮动,清除默认样式
查看>>
ggplot2 aes函数map到data笔记
查看>>
3450: Tyvj1952 Easy
查看>>