Nearest Neighbor Search 简单几何(求空间一点到区域的距离)

2024-02-05 02:38

本文主要是介绍Nearest Neighbor Search 简单几何(求空间一点到区域的距离),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:
https://acm.bnu.edu.cn/v3/statments/52296.pdf

题意:
求空间一点(x0,y0,z0),到三维空间区域的最小距离?

分析:
先求二维平面的最小距离(将平面分为9部分分别处理即可),再求高的距离。
这里写图片描述

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;int main()
{long long x0,x1,x2,y0,y1,y2,z0,z1,z2;while(scanf("%lld%lld%lld",&x0,&y0,&z0)!=EOF){scanf("%lld%lld%lld",&x1,&y1,&z1);scanf("%lld%lld%lld",&x2,&y2,&z2);long long dis1, dis2=0;if(x0 >=x1 && x0 <= x2 && y0 >=y1 && y0 <= y2 &&  z0 >=z1 && z0 <= z2){printf("0\n"); continue;}if(x0<x1 && y0<y1) dis1 = (x1-x0)*(x1-x0)+ (y1-y0)*(y1-y0);else if(x0>=x1 && x0<=x2 && y0 <= y1) dis1 = (y1-y0)*(y1-y0);else if(x0>x2 && y0<y1) dis1 = (x2-x0)*(x2-x0) + (y1-y0)*(y1-y0);else if(x0<x1 && y0>=y1 && y0<=y2) dis1 = (x1-x0)*(x1-x0);else if(x0>=x1 && x0<=x2 && y0>=y1 && y0<=y2) dis1 = 0;else if(x0>x2 && y0>=y1 && y0<=y2) dis1 = (x0-x2)*(x0-x2);else if(x0<x1 && y0>y2) dis1 = (x0-x1)*(x0-x1)+(y0-y2)*(y0-y2);else if(x0>=x1 && x0<=x2 && y0 >y2) dis1 = (y0-y2)*(y0-y2);else dis1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2);if(z0>=z1 && z0<=z2) dis2 = 0;else dis2 = min((z0-z1)*(z0-z1),(z0-z2)*(z0-z2));printf("%lld\n",dis1+dis2);}return 0;
}

这篇关于Nearest Neighbor Search 简单几何(求空间一点到区域的距离)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679528

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python中经纬度距离计算的实现方式

《Python中经纬度距离计算的实现方式》文章介绍Python中计算经纬度距离的方法及中国加密坐标系转换工具,主要方法包括geopy(Vincenty/Karney)、Haversine、pyproj... 目录一、基本方法1. 使用geopy库(推荐)2. 手动实现 Haversine 公式3. 使用py

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程