当前位置: 首页 > news >正文

三分法

 参考算法学习笔记(62): 三分法 - 知乎

众所周知,二分法主要用来求函数的零点,那么三分法是二分法的变种,主要用来求单峰函数的极值点

三分法的原理非常简单,每次对一个区间[l,r]求三等分点lsecrsec:l = l + lsec, r = r - rsec.

 

例题F-牛牛战队的比赛地_牛客2025秋季算法编程训练联赛5-基础组

查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long longvector<pair<int, int>> v;double clc(double x){double maxn = 0;for(auto& [x1, y1] : v){double d = sqrt((x1 - x) * (x1 - x) + y1 * y1);if(d > maxn) maxn = d;}return maxn;
}void solve(){int n, x, y;cin >> n;for(int i = 1; i <= n; ++i){cin >> x >> y;v.emplace_back(x, y);}double l = -40000, r = 40000;while(r - l >= 1e-8){double lmid = l + (r - l) / 3;double rmid = r - (r - l) / 3;if(clc(lmid) <= clc(rmid)) {//ans = r;r = rmid;}else l = lmid;}cout << clc((l + r) / 2) << endl;return ;
}

题目中出现了“最大的最小”、“最小的最大”等字眼,一般情况都需要二分的写法,本题求最大距离距离的最小值,求的是极小值,我们可以用三分法来求解。

这段代码的核心思路是用三分法求解 “最大距离最小化” 问题。每次取[l, r]之间的三等分点比较

  • 比较两点的 “最大距离”(通过clc函数计算):
  • clc(lmid) <= clc(rmid):说明最优解在左区间,缩小右边界r = rmid
  • 否则:说明最优解在右区间,缩小左边界l = lmid

最后答案在更新后的[l, r]区间内。

http://www.rkmt.cn/news/47982.html

相关文章:

  • 昆仑通态触摸屏物联网远程运维McgsIot
  • 微软MS17-012安全更新详解:六大Windows漏洞修复指南
  • 以太坊的测试网络 - all-in
  • *题解:P6617 查找 Search
  • C 指针数组函数之间的关联
  • 逻辑回归(随笔)
  • 这封邮件写得真好,是你自己写的吗? 不,是AI写的
  • 灵活用工-连续劳务-计算器工具类,拿走不谢
  • Scapy构建telnet包
  • 逻辑回归原理与案例分析
  • 杂题记录 4
  • 25年11月计数题做题记录
  • CCPC2025哈尔滨站-H. 匹配
  • 【做题记录】HZOJ 多校-数论
  • 2014 吉林省赛题解 | CCUT应用OJ题解——F[X] + X = N
  • 洛谷 P4859 已经没有什么好害怕的了 题解(DP,二项式反演)
  • 飞鱼uu单人防空4
  • HaluMem:揭示当前AI记忆系统的系统性缺陷,系统失效率超50%
  • 团队作业2-需求规格说明书
  • 25.11.12 差分约束算法
  • 11/12
  • 解决Cursor编辑器无法通过include path识别C++头文件的问题
  • 重组蛋白基础与技术概述
  • Dynamics 365 Field Service跨站脚本欺骗漏洞分析
  • 日报11.12
  • [译] 省略 Async 与 Await
  • iverilog、gtkwave工具链接
  • 简化Python数据结构初始化:从繁琐到优雅的进阶指南 - 详解
  • 软工团队作业2--需求规格说明书
  • #题解#洛谷P1314#二分#前缀和#