poj:4091:The Closest M Points
poj:4091:The Closest M Points
每到饭点,就又到了一日几度的小L纠结去哪吃饭的时候了。由于有太多太多好吃的地方能够去吃,而小L又比較懒不想走太远,所以小L会先找到距离他近期的M家餐馆然后再做筛选。
小L如今所在的位置和每家餐馆的位置用同一笛卡尔坐标系中的点表示,而点与点之间的距离为欧几里得距离,对于点p = (p1, p2,..., pn)和点q = (q1,q2,..., qn),两者的距离定义例如以下

现给出在K维空间中小L所处的位置的坐标以及n个餐馆的位置,请帮助小L完毕他的需求。
接下来n行,每行包括K个数,表示每一个餐馆的坐标。
接下来1行。包括一个数t,1≤t≤10000。表示小L询问的数目。
每次询问包括两行。
第1行包括K个数,表示小L所在的坐标。第2行包括一个数M,1≤M≤10。
全部坐标值不会超过10000。
输入数据包括多组数据。请逐个处理直到文件结束。
第1行输出:”the closest M points are:”,当中M在输入中给出。
接下来M行输出距离近期的M家餐馆的坐标,依照由近及远的顺序输出。
输出数据保证答案唯一。保证从小L的位置到近期的M+1家餐馆位置各不同样。这说明例如以下输入数据:
2 2
1 1
3 3
1
2 2
1
不会存在。
3 2
1 1
1 3
3 4
2
2 3
2
2 3
1
the closest 2 points are:
1 3
3 4
the closest 1 points are:
1 3
#include <iostream>
#include <fstream>
#include <list>
#include <math.h>
#include <algorithm>
using namespace std; typedef pair<double,int> distance_restaurant; void read_data();
// data 为餐馆地址表
list<distance_restaurant> main_solution(int ** data,int n,int k,int *dizhi); int main()
{
read_data();
system("pause");
return 0;
} void read_data()
{
ifstream reader;
reader.open("data.txt");
int n,k;
reader>>n;
reader>>k;
int ** data = new int *[n];
for( int i=0; i<n; i++ )
{
data[i] = new int[k];
for(int j=0;j<k;j++)
reader>>data[i][j];
} int t;
reader>>t;
while( t>0 )
{
t-- ; int * dizhi = new int[k] ;
for( int i=0;i<k;i++ )
reader>>dizhi[i] ;
int m;
reader>>m;
cout<<"the closest "<<m<<" points are:"<<endl;
list<distance_restaurant> result = main_solution(data,n,k,dizhi);
for( list<distance_restaurant>::iterator it = result.begin();m>0 && it != result.end() ;m-- ,it++)
{
for(int j=0;j<k;j++)
{
cout<<data[it->second][j]<<" ";
}
cout<<endl;
} }
} // data 为餐馆地址表
list<distance_restaurant> main_solution(int ** data,int n,int k,int *dizhi)
{
list<distance_restaurant> result;
distance_restaurant elem;
for( int i=0;i<n;i++)
{
elem.second = i;
elem.first = 0;
for(int j=0;j<k;j++)
{
elem.first += (data[i][j]-dizhi[j]) * (data[i][j]-dizhi[j]);
}
elem.first = sqrt(elem.first);
result.push_back(elem);
} stable_sort(result.begin(),result.end());
return result;
}
poj:4091:The Closest M Points的更多相关文章
- 数据结构(KD树):HDU 4347 The Closest M Points
The Closest M Points Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 98304/98304 K (Java/Ot ...
- 【BZOJ】3053: The Closest M Points(kdtree)
http://www.lydsy.com/JudgeOnline/problem.php?id=3053 本来是1a的QAQ.... 没看到有多组数据啊.....斯巴达!!!!!!!!!!!!!!!! ...
- BZOJ3053: The Closest M Points
题解: 我们可以事先在堆里放入插入m个inf然后不断的比较当前值与堆首元素的大小,如果小于的话进入. 估计函数也可以随便写写... query的时候貌似不用保留dir... return 0写在 wh ...
- bzoj 3053 HDU 4347 : The Closest M Points kd树
bzoj 3053 HDU 4347 : The Closest M Points kd树 题目大意:求k维空间内某点的前k近的点. 就是一般的kd树,根据实测发现,kd树的两种建树方式,即按照方差 ...
- HDU 4347 - The Closest M Points - [KDTree模板题]
本文参考: https://www.cnblogs.com/GerynOhenz/p/8727415.html kuangbin的ACM模板(新) 题目链接:http://acm.hdu.edu.cn ...
- The Closest M Points
The Closest M Points http://acm.hdu.edu.cn/showproblem.php?pid=4347 参考博客:https://blog.csdn.net/acdre ...
- 【BZOJ】【3053】The Closest M Points
KD-Tree 题目大意:K维空间内,与给定点欧几里得距离最近的 m 个点. KD树啊……还能怎样啊……然而扩展到k维其实并没多么复杂?除了我已经脑补不出建树过程……不过代码好像变化不大>_&g ...
- BZOJ 3053: The Closest M Points(K-D Tree)
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1235 Solved: 418[Submit][Status][Discuss] Descripti ...
- hdu 4347 The Closest M Points (kd树)
版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 4347 题意: 求k维空间中离所给点最近的m个点,并按顺序输出 . 解法: kd树模板题 . 不懂kd树的可以先看看这个 . 不多说, ...
随机推荐
- 机器学习之Logistic 回归算法
1 Logistic 回归算法的原理 1.1 需要的数学基础 我在看机器学习实战时对其中的代码非常费解,说好的利用偏导数求最值怎么代码中没有体现啊,就一个简单的式子:θ= θ - α Σ [( hθ( ...
- 4. ZooKeeper 基本操作
ZooKeeper的数据模型及其API支持以下九个基本操作: 操作 描述 create 在ZooKeeper命名空间的指定路径中创建一个znode delete 从ZooKeeper命名空间的指定路径 ...
- Django中请求的生命周期
1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中. Django的请求生命周期是指当用户 ...
- Maven快速使用阿里云的代理maven仓库
自从开源中国的maven仓库挂了之后就一直在用国外的仓库,慢得想要砸电脑的心都有了.如果你和我一样受够了国外maven仓库的龟速下载?快试试阿里云提供的maven仓库,从此不在浪费生命…… 仓库地址: ...
- Python程序员去上海工作有多难?
我只能说,也要看你掌握的技术可以打多少分.技术熟练度跟找工作的难易程度是成正比的:你掌握得越好,找工作就越容易(难度系数越低):反之越高. Python程序员这种技术类的工作岗位,当然还是要有扎实的技 ...
- C#只能运行一个实例程序的方法
互斥进程(程序), 简单点说,就是在系统中只能有该程序的一个实例运行. 现在很多软件都有这功能,如Maxthon 可以设置为"只允许打开一个窗体",还有Bitcomet等. 我也是 ...
- springmvc跨域+token验证(app后台框架搭建二)
这是app后台框架搭建的第二课,主要针对app应用是跨域的运用,讲解怎么配置跨域服务:其次讲解怎么进行token验证,通过拦截器设置token验证和把token设置到http报文中.主要有如下: ...
- ssh 免密钥失败原因
1.权限问题 本地端 ssh chmod 777 ~/.ssh sudo chmod 777 /home/当前用户 远程端 .ssh目录下的authorized_keys sudo chmod 777 ...
- pku夏令营面试
北大面试题目: 一.内存交换 内存交换(对换)的基本思想是,把处于等待状态(或在CPU调度原则下被剥夺运行权利) 的程序从内存移到辅存,把内存空间腾出来,这一过程又叫换出:把准备好竞争CPU运行的程序 ...
- pytesseract使用
1.安装pip install pytesseract 2.安装tesseract-ocr,下载地址:https://github.com/UB-Mannheim/tesseract/wiki,我安装 ...