文章目录

  • Solution - Maximum Distance

涉及遍历整个解空间的问题

资料-resources

6 - Complete Search

在很多问题中(尤其是在 USACO Bronze 级别),只需检查解空间中的所有可能情况就足够了,比如所有元素、所有元素对、所有子集,或者所有排列。

毫不奇怪,这种方法被称为完全搜索(complete search)或暴力搜索(brute force),因为它会彻底遍历整个解空间。

问题-problem

Maximum Distance

Solution - Maximum Distance

我们可以遍历每一对点,并通过对欧几里得距离公式平方来计算它们之间的距离平方:

distance2[(x1,y1),(x2,y2)]=(x2−x1)2+(y2−y1)2\text{distance}^2\left[(x_1,y_1),(x_2,y_2)\right] = (x_2 - x_1)^2 + (y_2 - y_1)^2 distance2[(x1,y1),(x2,y2)]=(x2x1)2+(y2y1)2

将当前的最大距离平方值保存在变量 max_squared 中。

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;vector<int> x(n), y(n);for (int &t : x) { cin >> t; }for (int &t : y) { cin >> t; }int max_squared = 0;                   // 存储当前最大距离平方for (int i = 0; i < n; i++) {          // 遍历每个第一个点for (int j = i + 1; j < n; j++) {  // 遍历每个第二个点(避免重复和自比较)int dx = x[i] - x[j];int dy = y[i] - y[j];int square = dx * dx + dy * dy;/** 如果两点距离的平方大于当前最大值,则更新最大值*/max_squared = max(max_squared, square);}}cout << max_squared << endl;
}

由于我们要遍历所有点对,因此让内层循环从 j=i+1j=i+1j=i+1 开始,确保点 iii 和点 jjj 永远不会是同一个点。另外,这样还能保证每一对点只被计算一次。

在这道题中,即使重复计算点对或允许 i=ji=ji=j 也不会影响最终结果(求最大距离),但在其他需要计数的问题中,避免重复计数非常重要。

题目要求输出的是任意两点之间最大欧几里得距离的平方。

有些同学可能想先用整数变量存储最大距离,然后最后再对结果进行平方。

但这里的问题是,两个整数点之间的距离平方一定是整数,但距离本身不一定是整数(可能是无理数或小数)。因此,如果先存储距离(非整数)到整数变量,会导致小数部分被截断,造成错误。

下面的解决方案使用浮点型变量来正确存储最大距离。

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;vector<int> x(n), y(n);for (int &t : x) { cin >> t; }for (int &t : y) { cin >> t; }double max_dist = 0;for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {int dx = x[i] - x[j];int dy = y[i] - y[j];int square = dx * dx + dy * dy;max_dist = max(max_dist, sqrt(square));}}cout << (int)pow(max_dist, 2) << endl;
}

但是,这段代码在以下测试用例上仍然会失败(它输出了 121212,而正确答案是 131313):

2
0 3
2 0

原因是浮点数计算的舍入误差导致的。虽然使用 (int) round(pow(max_dist, 2)) 进行四舍五入可以解决这个问题,但最重要的结论是:尽可能使用整数计算,避免浮点数误差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91469.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91469.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/91469.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络的层与块

什么是层&#xff1f;什么是块&#xff1f;在深度学习中&#xff0c;层&#xff08;Layer&#xff09; 和块&#xff08;Block&#xff09; 是构建神经网络的核心概念&#xff0c;尤其在 PyTorch、TensorFlow 等框架中&#xff0c;二者既紧密关联又有明确分工。理解它们的定义、…

如何用Qt写一个安卓Android应用

对于不会安卓开发的同胞来讲(比如我)&#xff0c;想要做一个安卓应用(.apk)使用Qt是一个不错的方法&#xff0c;今天就来聊聊如何使用Qt结合C写一个安卓应用。 首先我们得拥有一个Qt,我使用的是5.14.2版本的&#xff0c;新版本可直接到qt官网去下载qt.io,老版本的现在qt官网不支…

泰语OCR识别技术方案

一、痛点分析1.1 泰语文字特性带来的挑战复杂字符集&#xff1a;泰语有44个辅音字母、15个元音符号、4个声调符号和10个数字&#xff0c;组合形式多样上下叠加结构&#xff1a;泰文字符常在垂直方向叠加组合&#xff0c;增加分割难度无词间空格&#xff1a;泰语单词间无明确分隔…

MER-Factory:多模态情感识别与推理数据集自动化工厂工具介绍

&#x1f6e0;️ 工具 如果这个项目对你有帮助&#xff0c;欢迎给 https://github.com/Lum1104/MER-Factory/ 仓库点一个 Star &#x1f31f; &#xff0c;这对我们帮助很大 MER-Factory 提供交互式工具来帮助您管理数据和配置处理流水线。 调优仪表板 调优仪表板 是一个基…

Python基础数据结构详解:字符串、列表、元组和字典的常用方法

目录 一、引言&#xff1a;为什么学习这些数据结构&#xff1f; 二、字符串&#xff08;String&#xff09;的常用方法 1. 基本操作 2. 查找索引 3. 大小写转换 4. 位置调整 5. 开头和结尾检查 6. 分割和连接 7. 删除空白字符 8. 类型判定 9. 替换内容 字符串小结 …

Liunx练习项目5.1-周期化任务;时间同步服务;

1.系统周期化任务1.1 at命令的用法at 时间 指定在规定的时间上执行相应的操作&#xff0c;完成操作crtlD完成编辑一分钟后输入的指令完成&#xff0c;创建了file{1..5}的文件at -l 查看系统上面所有用户的调度at -c 可以查看该任务的指令at -d 加编号可以删除该任务at -v 可以…

小皮面板搭建pikachu靶场

一、搭建所需的工具 1.下载小皮面板 下载地址为&#xff1a;小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; 2.下载靶场所需的文件 下载地址为&#xff1a;https://github.com/zhuifengshaonianhanlu/pikachu 二、环境的搭建 打开小皮面板&#xff0c;使用所…

使用aiohttp实现高并发爬虫

使用aiohttp来编写一个高并发的爬虫&#xff0c;想法很不错&#xff0c;现实很骨感。这里我们要知道&#xff0c;由于高并发可能会对目标服务器造成压力&#xff0c;请确保遵守目标网站的robots.txt&#xff0c;并合理设置并发量&#xff0c;避免被封IP。 我将通过示例代码&…

【Linux庖丁解牛】— 信号量ipc管理!

1. 并发编程概念铺垫> 多个执行流【进程】看到同一份资源&#xff1a;共享资源。> 被保护起来的资源叫做临界资源。> 在进程中&#xff0c;涉及临界资源的程序段叫做临界区。【说人话就是程序中访问共享资源的代码】> 什么是互斥&#xff1a;任何时刻&#xff0c;只…

Spring Boot全局异常处理详解

原代码&#xff1a;package com.weiyu.exception;import com.weiyu.pojo.Result; import com.weiyu.utils.ErrorFileResponseUtils; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import …

FHE技术将彻底改变在线隐私保护方式

1. 在线隐私的简史 互联网刚刚诞生时&#xff0c;所有的内容都是未加密的。人们通过一个特定的地址访问网站&#xff0c;这个地址以“HTTP”开头。当时&#xff0c;这并不是什么大问题&#xff0c;因为人们在线访问的都是内容&#xff0c;而这些内容本身已经是公开的。但随着电…

Cursor配置Java环境、创建Spring Boot项目

一&#xff1a;配置JDK和Maven cursor默认会读取环境变量JAVA_HOME和MAVEN_HOME&#xff0c;如果没有配置去找默认路径~/.m2/settings.xml也可以手动指定&#xff1a;Ctrl Shift P 输入"Preferences:Open User Settings(JSON)"打开settings.json文件&#xff0c;然…

win11添加无线显示器(两个笔记本实现双屏)

前置条件&#xff1a; 两个笔记本要要支持无线显示器&#xff0c;支持蓝牙&#xff1b; 1、自己重装的win11系统&#xff0c;首先根据网上说明进去的时候&#xff0c;红色显示无无线投屏&#xff1b; 2、安装网上操作&#xff0c;查看自己电脑是否支持无线投屏&#xff08;是支…

【MAC技巧】Bash/Zsh切换失败的故障排除

【MAC技巧】Bash/Zsh切换失败的故障排除 Troubleshooting to Failure " chsh: no changes made" By JacksonML 在Mac电脑中&#xff0c;终端(Terminal)是常用的命令行工具&#xff0c;对开发和运维至关重要。 依照苹果电脑的系统软件迭代&#xff0c;终端中存有B…

卷积神经网络-卷积的分类

卷积的定义卷积是图像处理中最核心的操作之一&#xff0c;其本质是通过卷积核&#xff08;滤波器&#xff09;与图像进行滑动窗口计算&#xff08;像素值乘积之和&#xff09;&#xff0c;实现对图像特征的提取、增强或抑制。一、二维卷积--针对二维矩阵进行处理1.1单通道见得最…

全网首发:使用GIT下载时崩溃退出,是因为机械硬盘

前面有几篇文章&#xff0c;说是GIT下载会退出。开始以为是虚拟机问题。把家里的虚拟机复制到公司&#xff0c;照样崩溃。后来认为是内存不足。昨天在家里下载代码&#xff0c;也崩溃退出。心里觉得奇怪&#xff0c;试了一次&#xff0c;还是退出。差别在哪里&#xff1f;之前是…

YAML 自动化用例中 GET vs POST 请求的参数写法差异

GET 请求&#xff1a;用 params 传参&#xff08;附加在 URL 上&#xff09; config:name: "GET 查询用户信息"base_url: "https://api.example.com"teststeps:- name: "根据 userId 查询用户信息"request:method: GETurl: /api/user/detailpara…

使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道

SeaTunnel 是一个非常易用、超高性能的分布式数据集成平台&#xff0c;支持实时海量数据同步。 每天可稳定高效地同步数百亿数据&#xff0c;已被近百家企业应用于生产&#xff0c;在国内较为普及。 Databend 是一款开源、弹性、低成本&#xff0c;基于对象存储也可以做实时分…

linux服务器换ip后客户端无法从服务器下载数据到本地问题处理

服务器换ip后客户端无法从服务器下载数据到本地&#xff0c;根据上图提示&#xff0c;让用户清理下~/.ssh/known_hosts文件&#xff0c;下载恢复正常。

从0到1实现Shell!Linux进程程序替换详解

目录从0到1实现Shell&#xff01;Linux进程程序替换详解 &#x1f680;引言&#xff1a;为什么进程需要"变身术"&#xff1f;一、程序替换&#xff1a;进程的"换衣服"魔法 &#x1f504;1.1 什么是程序替换&#xff1f;1.2 程序替换的原理&#xff1a;内存…