有m个车站和n个房屋,每个车站和房屋的(x,y)坐标给出,每个房屋输出最近的车站。

后来,这个问题被推广到从每个房子找到最近的车站。

我的看法:对于每个房子,建立一堆距离(自下而上)到车站,然后弹出k。 对所有房屋都这样做。 为O(n *(M + klogm));

或者,对于每个房屋,为工作站构建订单统计树,然后查找具有等级的节点并遍历该节点下方的整个树。 对所有房屋都这样做。 为O(n *(mlogm + 10gm的+ k))的

还有更好的替代品吗? 任何基于图DS的解决方案,哪个比这更好?

===============>>#1 票数:5

这听起来像是使用kd树四叉树或其他空间分区树的绝佳位置。 “找到最接近某个测试点的k个对象”的问题称为k-最近邻问题 ,这两个数据结构非常有效地解决了它。 它们的实施起来也相当简单。

具体来说:在站外建立一个kd树或四叉树。 然后,对于每个房屋,在数据结构中对该房屋进行k近邻查询以找到最近的站点。

希望这可以帮助!

  ask by claudius translate from so

未解决问题?本站智能推荐: