尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【模板】平面最近点对

【模板】平面最近点对
📅 发布时间:2026/6/19 21:18:07
神经的写法,害得我笑了出来。平衡树(这里用的是 multimap)写法。注意 `vec` 的大小是严格 $O(1)$ 的,所以复杂度的 $O(n\log n)$ 的瓶颈在那个平衡树上。

【模板】平面最近点对

#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#define debug(...) fprintf(stderr, __VA_ARGS__)
#else
#define endl "\n"
#define debug(...) void(0)
#endif
using LL = long long;
constexpr int N = 1e6 + 10;
struct dot {int x, y;
} a[N];
double dist(dot a, dot b) {return hypot(a.x - b.x, a.y - b.y);
}
int n;
double ans;
multimap<int, int, less<>> mp;
multimap<int, int, less<>>::iterator its[N];
int main() {
#ifndef LOCALcin.tie(nullptr)->sync_with_stdio(false);  
#endifcin >> n;for (int i = 1; i <= n; i++) cin >> a[i].x >> a[i].y;sort(a + 1, a + n + 1, [&](dot lhs, dot rhs) { return lhs.x < rhs.x; });ans = dist(a[1], a[2]), ans2 = dist2(a[1], a[2]);for (int i = 1, l = 1; i <= n; i++) {while (l < i && a[i].x - a[l].x >= ans) mp.erase(its[l++]);auto itl = mp.upper_bound(a[i].y - ans);auto itr = mp.lower_bound(a[i].y + ans);auto vec = vector<pair<int, int>>(itl, itr);for (auto [y, x] : vec) ans = min(ans, dist(a[i], {x, y}));its[i] = mp.insert({a[i].y, a[i].x});}cout << fixed << setprecision(4) << ans << endl;return 0;
}

multimap<int, int, less<>> 中的 less<> 是必要的。然后这种做法注意 vec 的大小是严格 \(O(1)\) 的,所以复杂度的 \(O(n\log n)\) 的瓶颈在那个平衡树上。

神经的写法,害得我笑了出来。

本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/19084629

相关新闻

  • 第01周 预习、实验与作业:绪论与Java基本语法
  • 删除字符串中的所有相邻重复项
  • Iframe 全屏嵌入实验

最新新闻

  • 修复kkFileView XSS漏洞与POI文件预览兼容性问题实战
  • 弱监督学习与概率提示技术在3D目标检测中的应用
  • Hoppscotch自托管部署与API自动化测试实战指南
  • Qwen3.6-A3B:面向本地Agent的MoE实时推理引擎解析
  • 微信防撤回失效?RevokeMsgPatcher 2.0 技术原理与实战指南
  • 普宁连锁眼镜店哪家靠谱|自营和加盟的本质区别是什么 - 品牌观察

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号