博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法学习】三分法
阅读量:4619 次
发布时间:2019-06-09

本文共 577 字,大约阅读时间需要 1 分钟。

我们都知道二分查找以及许多二分的应用。

但是二分主要是对于有单调性的函数或数列才能使用。

如果这个函数/数列没有单调性,而是有一种单峰/谷的特性。

我们可以使用三分法来确定这个函数的极值。

三分法的具体思想可在别处见到。

我就贴一个自己的模板,没有bug……

因为我曾经被一个有bug的模板坑害了……

速度非常快,常数应该很小。约是二分的两倍常数左右。

1 l=L,r=R;//确定l,r的初值,保证l<=r哦 2 while(l!=r){ 3     if(r-l<3){
//[l,r]超过3就特判 4 Ans=Max4(Ans,f(i,l),f(i,l+1),f(i,r)); 5 break; 6 } 7 mid1=(l+r)/2, mid2=mid1+1;//将两点取得靠近中点,会减小常数 8 val1=f(i,mid1), val2=f(i,mid2); 9 if(val1>=val2) r=mid2;10 if(val1<=val2) l=mid1;11 }12 if(l==r) Ans=max(Ans,f(i,l));//对于开始时l==r的特判

 

转载于:https://www.cnblogs.com/PinkRabbit/p/7476236.html

你可能感兴趣的文章
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
查看>>
PHP中获取当前页面的完整URL
查看>>
所谓输入掩码技术,即只有数字键起作用
查看>>
Display对象,Displayable对象
查看>>
安装oracle11G,10G时都会出现:注册ocx时出现OLE初始化错误或ocx装载错误对话框
查看>>
生产环境下正则的应用实例(一)
查看>>
在CentOS7命令行模式下安装虚拟机
查看>>
Arduino可穿戴开发入门教程Arduino开发环境介绍
查看>>
Windows平台flex+gcc词法分析实验工具包
查看>>