当前位置: 首页 > 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.jsqmd.com/news/38884/

相关文章:

  • vue-element el-select 赋值选择项后选择事件不生效
  • Python正则表达式操作速查表(全面版v1.0 - 2025年11月12日修订)
  • 11月12日日记
  • 微信小程序支付遇到问题:PKIX path building failed: unable to find valid certification path to requested target
  • 11-12午夜盘思
  • Day19综合案例二
  • 命题逻辑连接词 ↔ C++ 逻辑/位运算 对照表(完整版)
  • 昆仑通态触摸屏物联网远程运维McgsIot
  • 简单二分
  • 微软MS17-012安全更新详解:六大Windows漏洞修复指南
  • 2025.11.12总结
  • 以太坊的测试网络 - all-in
  • Scala基础学习day01
  • 洛谷 P11965:[GESP202503 七级] 等价消除 ← 位运算(异或) + STL map
  • C 指针数组函数之间的关联
  • 2025.11.12 测试
  • 13. 罗马数字转化为字符串
  • 这封邮件写得真好,是你自己写的吗? 不,是AI写的
  • FFmpeg 官方汇编课程:写出快 5 倍的视频处理代码
  • 四、中断(基于北京迅为电子)
  • List执行Dispose时可释放子元素逻辑占用的List写法
  • Sora 后思考:从 AI 工具到 AI 平台,产业 AGI 又近了一步 - 指南
  • Scapy构建telnet包
  • Spring AI Alibaba 项目源码学习(三)-Graph 执行流程分析
  • 值得复习的题目
  • 逻辑回归原理与案例分析
  • 找唯一特征去重转移DP——CF1210F2 Marek and Matching
  • UEFI Boot Manager
  • 25年11月计数题做题记录
  • 固体废物资源化处理简答题与论述题