热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

二分三分总结

一、二分二分最基本的用途是用来对一个有序数列二分查找元素,由于二分的时间复杂度仅为O(logn),又是还可以用于枚举可能的答案进行判定,即为二分答案。考试时考的最多的也是二分答案(毕竟二分查

一、二分

  二分最基本的用途是用来对一个有序数列二分查找元素,由于二分的时间复杂度仅为O(log n),又是还可以用于枚举可能的答案进行判定,即为二分答案。考试时考的最多的也是二分答案(毕竟二分查找都有STL写好的函数了...)。

  二分答案题型总结:

    能用二分答案做的题一般都有单调性,即在某个限度内,劣与这个限度的答案都满足题意但不是最优,而比这个限度最强的答案则不能满足题意。我们就要通过二分的方法把这个限度求出来。例如最大值最小化问题(或最小值最大化问题),和一部分最优化问题。

    二分答案的优点在于将最优值的求解转化为可行性判定问题,时间复杂度为O(log n * 判定的复杂度)。而判定又常常用到贪心,甚至又要套上一个二分。

    二分要注意定义域为整数还是实数会影响到二分循环的判断条件,偶尔还会有精度问题——当然是在时间特别充足的时候越精确越好啦。

二、三分

  对于一个极值的两侧都严格单调的单峰函数,我们常常用三分去求它的极值。原理为:一段包含极值的两个三等分点中较优的会与极值点一起,在另一个三等分点的同一侧。注意维护区间时左右端点对应的三等分点顺序就好。

  三分核心代码(这里以定义域为实数的为例)

1 while(r-l>=0.000001)
2         {
3             m1=l+(r-l)/3;
4             m2=r-(r-l)/3;
5             if(check(m1)>=check(m2)) r=m2;//这里以更大为更优
6             else l=m1;
7         }

 


推荐阅读
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文详细介绍了在 Python 中如何有效去除浮点数末尾的无意义零及不必要的点,提供多种实现方法,并深入探讨了浮点数在计算机中的表示方式及其可能带来的精度问题。 ... [详细]
  • Excel技巧:实现自定义排序功能
    在日常的数据处理中,除了常见的数字和字母排序外,有时还需要根据特定的标准(如职位等级、教育水平)对数据进行排序。这些非标准的排序规则通常需要用户自行定义。例如,如何在Excel中按照学历从高到低对人员信息进行排序? ... [详细]
  • PHP混淆代码的破解与理解
    本文探讨了PHP中常见的代码混淆技术及其破解方法,包括简单的变量名混淆和更复杂的加密技术。 ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 本文旨在探讨设计模式在Visual FoxPro (VFP) 中的应用可能性。虽然VFP作为一种支持面向对象编程(xbase语言)的工具,其OO特性相对简明,缺乏高级语言如Java、C++等提供的复杂特性,但设计模式作为一种通用的解决方案框架,是否能有效应用于VFP,值得深入研究。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • 深入解析JVM内存模型与分配机制
    本文详细探讨了JVM内存结构的主要组成部分,包括Java虚拟机栈、Java堆、方法区等,并深入分析了HotSpot虚拟机的分代收集策略及其对不同内存区域的管理方式。 ... [详细]
  • 本文详细介绍了二叉堆的概念及其在Java中的实现方法。二叉堆是一种特殊的完全二叉树,具有堆性质,常用于实现优先队列。 ... [详细]
  • 使用C#构建动态图形界面时钟
    本篇文章将详细介绍如何利用C#语言开发一个具有动态显示功能的图形界面时钟。文章中不仅提供了详细的代码示例,还对可能出现的问题进行了深入分析,并给出了解决方案。 ... [详细]
  • 深入解析JVM中的垃圾回收机制
    本文详细探讨了JVM中垃圾回收的几种主要算法及其工作原理,包括标记-清除、复制、标记-整理及分代收集算法,并简要介绍了常见的垃圾收集器。 ... [详细]
  • MATLAB是科技工作者的重要工具,以其强大的科学计算能力和简洁的编程风格而广受好评。然而,MATLAB生成的图形默认分辨率较低,这在某些情况下可能会影响图形的质量。本文将介绍如何在MATLAB中保存高分辨率的图形。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • 本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ... [详细]
  • 探讨密码安全的重要性
    近期,多家知名网站如CSDN、人人网、多玩、开心网等的数据库相继被泄露,其中大量用户的账户密码因明文存储而暴露无遗。本文将探讨黑客获取密码的常见手段,网站如何安全存储用户信息,以及用户应如何保护自己的密码。 ... [详细]
author-avatar
有你世界就很美_484
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有