答案具有可二分性时,我们可以用二分答案来解决。但是,如果要求出凸性函数或凹性函数的最值时,二分就毫无用武之地了,这时,我们就可以用三分法来求出答案。

一个凸性序列/凹性序列通俗的说法就是在该序列最大值/最小值的左边满足不严格单调递增/递减,右边满足不严格单调递减/递增。如1,2,3,6,4是一个凸性序列,而5,4,4,3,1,2,4,6是一个凹性序列(见下图),而图中的6和1就分别是两个序列的最值。

与二分法类似的是,三分法也先取下界(记作l)和上界(记作r)的中间值(记作midl),随后,再取midl与r的中间值(记作midr)。接下来,我们要比较midl和midr所在的元素哪一个更接近最值,并依此更新上界和下界。不断重复以上操作,直至l>=r,则此时的l就是答案。

具体实现后得出的代码如下:

//这里以在一个凸性序列中查找元素为例
int find(int l,int r,int v)//l存储上界,r存储下界,v即为目标元素
{if(l>=r) return l;//返回答案int midl=(l+r)>>1,midr=(midl+r)>>1;//比较midl与midr的大小if(sum[midl]>sum[midr]) return find(l,midr);//若midl大于midr,说明最大值在左侧区间return find(midl,r);//反之,说明最大值在右侧区间
}

注:如果您通过此文学会了三分法,请您点个赞再离开。当然,也欢迎在讨论区指出此文的不足处,作者会及时对此文加以修正
版权声明:转载请注明地址

分治(二)——三分法学习笔记相关推荐

  1. 工程伦理第十二章学习笔记2020最新

    工程伦理第十二章学习笔记2020最新 继续更新

  2. 【点分治】的学习笔记和众多例题

    [前言] 最近一段时间变成了通过题目学习算法,似乎整个人都乱套了(反思ing) 不过还好,现在又调整为了学算法后做题.(唉,最近一段时间有点急躁,要记住万事不能速成啊) [正题]点分治 一句话:点分治 ...

  3. 自考本科英语(二)学习笔记和考试经验

    文章目录 一.参考网站 二.总结 三.英语(二)书中单元重点单词与词组(根据参考网站1.统计来的) 四.自己作文与作文范例 概要: 整理出了我学习英语(二)过程的所有参考资料和重点的单词短语,祝大家也 ...

  4. Go语言核心36讲(Go语言实战与应用十二)--学习笔记

    34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换 ...

  5. 【D1N910】正则表达式30分钟入门教程 (二)-学习笔记 实践

    正常操作,正常分析,大家好,我是D1n910. 本文学习自 正则表达式30分钟入门教程 http://deerchao.net/tutorials/regex/regex.htm 书接上文 六.重复 ...

  6. 复变函数与积分变换(二)学习笔记[调和,解析,常见初等函数]

    [ 找两个典型的不同方向即可 证明可导一定连续 命题二:还应该在这个闭区域的邻域解析.在边界可导,不一定在边界解析. 只在一点可导,也可以算是处处不解析. 解析的充分必要条件 注意上图:直接求偏导就可 ...

  7. $cfg_dbtype = mysql_Druid连接池二(学习笔记)

    6.Druid关联 6.1.Web关联监控配置 WebStatFilter用于采集web-jdbc关联监控的数据. web.xml配置: DruidWebStatFiltercom.alibaba.d ...

  8. dx12 龙书第十二章学习笔记 -- 几何着色器

    如果不启用曲面细分(tessellation)这一环节,那么几何着色器(geometry shader)这个可选阶段便会位于顶点着色器与像素着色器之间.顶点着色器以顶点作为输入数据,而几何着色器的输入 ...

  9. (二)学习笔记autoware源码core_planning(waypoint_extractor)

    #include <ros/ros.h> #include <tf/transform_datatypes.h> #include <autoware_msgs/Lane ...

最新文章

  1. 【机器学习】【条件随机场CRF-3】条件随机场的参数化形式详解 + 画出对应的状态路径图 + 给出对应的矩阵表示...
  2. Oracle alter table详解
  3. tomcat端口被占用如何解决
  4. 山西地区领取2020年下、2021年上半年证书
  5. java计算时间跨度_请问如何使用Java计算时间跨度并格式化输出?
  6. 机器学习理论《统计学习方法》学习笔记:第十一章 条件随机场(CRF)
  7. ionic入门教程第十六课-在微信中使用ionic的解决方案(按需加载加强版)
  8. android 中的invalidate 和 postInvalidate
  9. 每日一笑 | 一些关于学编程的领悟
  10. 基于java TCP实现网络通信聊天室《建议收藏附完整源码》
  11. 我的docker随笔18:阿里云docker仓库的使用
  12. linux配置caffe环境,ubuntu14.04环境下配置caffe
  13. C#可逆加密-Rijndael算法
  14. python不会英语不会数学怎么自学-零基础想自学PYTHON如果补数学怎么补?
  15. poj 2649 Factovisors
  16. 【速来报名】中国影响力巨大的开源峰会即将召开
  17. Python3 学习第十二弹: 补充something
  18. 计算机丢失gdiplus.dll怎么办,win7系统丢失gdiplus.dll报错的解决办法
  19. 计算机求职信英语作文模板,英语自荐信范文(计算机)
  20. 盘点那些大学生自习室最无法忍受的行为!

热门文章

  1. MySQL查询最大值(最小值)或前n个最大(最小)值的方法分析
  2. 诛仙哪里炼器服务器最稳定,告别炼器难 《诛仙2》顶级炼器师云集诛仙电台
  3. 所有过往、皆为序章:我的2021
  4. 输出字符表情c语言,Objective-C读取十六进制代码并输出表情符号
  5. php一维数组的定义,PHP 数组定义、遍历的实现方法
  6. 岁月如沙容颜易逝,年关将至的感伤你有吗?
  7. java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet/sf/jsql
  8. STM32、51单片机如何使用USB转TTL烧写程序?
  9. 网吧服务器用户锁怎么办,如何进行网吧安全模式的锁定与解除
  10. 采油区域java_[APIO2009]采油区域