二分答案耶~

【模板+讲解】二分答案 【模板+讲解】二分答案 !阅读须知||阅读本博文前笔者认为读者已经学会(或了解)了: 1.基础语言与算法 2.标准二分法(二分思想) 3.二分查找 定义二分答案与二分查找类似,即对有着单调性的答案进行二分,大多数情况下用于求解满足某种条件下的最大(小)值。答案单调性 答案的单调性大多数情况下可以转化为一个函数,其单调性证明多种多样,如下: 移动石头的个数越多,答案越大(NOI 阅读详情

一个没什么用的标题(bushi

引入

二分查找想必大家一定都不陌生吧,就那个lower_bound(误;
当我们不太容易找到一个答案,但是能比较容易判断一个答案是否正确的时候,我们会想到怎么去解决只一个问题呢?非常好!枚举!

例题

暴力写法

洛谷的一道例题;在这道题中, 我们不太容易直接求出最小的距离是多少,但是我们可以判断出一个距离d是否可以通过移走m个石头做到,请看判断的代码:

bool check(int d)
{
    int total = 0;
    int l = 0, r = 1;
    while (l <= r && r <= n + 1)
    {
        if (s[r] - s[l] < d)
            total++, r++;
        else
            l = r, r++;
        if (total > m)
            return false;
    }
    return true;
}

我们可以在通过从大到小枚举每一个可能的d,就可以找出来最小的距离了:

    for (int i = l; i >= 1; i--)
        if (check(i))
        {
            cout << i;
            return ;
        }

但是根据题目所给的条件,会发现l <= 1e9,会TLE;

优化

二分答案的一个显著特征是比较容易判断一个答案是否满足条件,例如这道题的check函数–>代表了答案具有有界性;二分答案的另一个显著特征就是最大值最小或者最小值最大–>代表了答案具有单调性,因为x成立的话x+1也一定成立(类似这种的);

signed main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin >> l >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> s[i];
    s[n + 1] = l;

    int left = 1, right = l, mid;
    while (left < right)
    {
        mid = left + right + 1 >> 1;
        if (check(mid))
            left = mid;
        else
            right = mid - 1;
    }
    cout << left;

    return 0;
}
“中分”(二分)算法(二分查找and二分答案) 这种方法要求满足条件的答案是单调有序的,其基本思想是在答案可能的范围([L,R])内二分查找答案,不断检查当前答案是否满足题目的要求,根据检查结果更新查找的区间,最终取得最符合题目要求的答案进行输出。二分搜索算法的应用不仅限于精确匹配查找,‌还可以扩展到计算一个值的排名(‌比它更小的元素的数量)‌、‌前趋(‌下一个最小元素)‌、‌后继(‌下一个最大元素)‌以及最近邻等。像这题我们就可以从5开始搜,如果砍的数量比需要的木材还多,就往大了搜,如果砍的数量比需要的木材多,那就往下的搜,直到找到合适的答案。 阅读详情

相关推荐

数据结构与算法:二分答案法

二分答案法

2402_89326161的博客 1087

二分答案讲解

今天我们来学:二分答案。

u013701761的博客 2217

华为硬件工程师笔试题

1、基尔霍夫定理的内容是什么?(仕兰微电子)   基尔霍夫定理包括电流定律和电压定律。   电流定律(KCL):在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于零。   电压定律(KVL):在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。   2、平板电容公式(C=εS/4πkd)。(未知)   3、最基本的如三极管曲线特性。(未知)   4、描述反馈电路...

weixin_33717117的博客 2万+

二分查找&二分答案【模板+例题】带你精通二分!

8000余字详解,带你一步一步学会二分!!

2402_88147924的博客 2303

NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)

NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导

qq_49979053的博客 5万+

关于RT-Thread中PWM无法正常输出的学习

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han

weixin_42566346的博客 3554

二分答案算法

跟二分查找类似,当我们要找某个量的最值的时候,可以在这个两最小可能的取值,和最大可能的取值之间二分,来快速找到答案check函数为了验证中间值是否符合题目要求,根据是否来决定下一轮区间界限是作曲兼缩小,还是右区间缩小。

2301_79980806的博客 2310

大模型应用开发面试全流程实录:RAG、上下文工程与多Agent协作技术深度解析

Transformer 依靠多头自注意力和位置编码实现高效序列建模。Prompt Engineering包含多种设计思路,如 Zero-shot、Few-shot、Chain-of-thought,提升模型泛化和推理。Token 和上下文窗口直接影响模型性能与成本,选择需结合实际业务场景(如客服对话需长窗口)。Embedding 技术是 RAG 的基础,决定了语义检索效果。向量数据库如 FAISS、Milvus等分别适用于本地/分布式检索。

m0_52114506的博客 828

基础算法系列 —— 有关二分答案法的玄学技巧

那么其实在这篇文章中,相信大家二分答案法的题目已经做过不少了,所以不是主讲二分答案是基本方法了,而是对于几个小技巧的讲解,主要是在解题过程中的心得,希望对大家能有所帮助~(本文章对于算法掌握度有一定的要求,所讲解的题目算法综合性较强)那么在这一部分中,主要分享两种(说不定是歪门邪道)

Zz_0913的博客 1608

如何用zemax导入solidworks装配体

在zemax使用中,常常需要导入各种零件。如果光机结构较为复杂,那么手工一个一个加载零件,还需要在zmx文件中调整object的位置,非常麻烦。如果能将solidworks的装配体模型直接导入,则可以大幅减小工作量。具体过程为(非序列模式下): 1、新建或打开一个zemax空文件 2、在元件编辑器中,找到一个空文件,双击或直接展开三角符,在类型中找到zemax里的solidworks装配体,如图。...

wojiaoyyy的博客 1万+

ubuntu20.04下内核源码下载分析

ubuntu 20.04下内核源代码下载,配置编译环境写在前面一、安装VMware Workstation和Ubuntu20.04二、修改apt源合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 写在前面 我最近的科研工作需要使用到对ubun

冰冻三尺非一日之寒 1万+

二分查找&二分答案专讲

二分是一种很重要的一种查找方法,有多重要呢,它在比赛中经常出现在最后一题 二分其实是一种暴力查找的优化,时间为log2n,数据量越大优化最明显 先讲二分查找 二分查找就是在一个有序数组中查找一个数,将这个数所在的开区间不断缩小,直到范围缩小至1,从而达成查找一个数的效果。

FYC31251914的博客 1012

Linux下搭建简易的HTTP服务器完成图片显示

篇文章作为Linux下socket(TCP)网络编程的练习,使用C语言代码搭建一个简单的HTTP服务器,完成与浏览器之间的交互,最终在浏览器上显示一张图片;通过这个例子可以巩固socket里多线程使用,也可以方便学习了解HTTP协议。

2588

二分及二分答案

二分及二分答案

yuanxinya_的博客 368

【WRF-GHG 教程第一期】概述(Overview)

概述(Overview)

WW、forever的博客 509

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

50.【必备】二分答案法与相关题目

本文的网课内容学习自B站左程云老师的算法详解课程,旨在对其中的知识进行整理和分享~

XY_StarField的博客 1195

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【算法】二分查找与二分答案

二分法基础、二分答案以及最大值最小化,及相关思考

bubblecheese的博客 1767

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

基础算法·二分答案

题目链接 摸鱼助教Mogg Ⅱ 洛谷原题(除了多组数据都是相同的)链接: P1182 数列分段Section II 解题思路 二分答案。 什么?什么是二分答案?我没听过 不要紧,希望这篇文章能帮助不会二分答案的你更好地理解二分的思想。 (神犇求放过) 不扯了,谈正题。 大家都做过一个单调递增函数找零点的题吧,比如这个 还记得怎么做么?什么,没记得做过这个题?那请您先去做一遍。 先回到最初...

avgjeco84463674的博客 609

浅谈二分答案

举个例子: 对于一些问题,它的解满足单调性,即如果x满足条件,则对于任意的 i ( 1<=i<=x) 或 (x <=i <=n) (假设1和n是答案的上下界)都会满足条件。一般遇上这种问题,我们就可以用二分答案来解决。 在不知道二分答案这个东西的时候,我们会这样写: for (int i = 1; i <= n; i++) { if (!check(i...

qq_43398760的博客 250

二分答案之切碎那个切绳子

切碎那个切绳子 目录 1.二分答案与二分查找的不同 2.切绳子的细节解释 切绳子这题耗了我一两天,发现是二分查找的思想禁锢了我,查找了很多资料,了解了二分答案后,发现天空一片晴朗,写题还是过不了… 因为,细节注意不到位,多少心思都白费。 所以,这里我着重说一下二分答案的简单思想,以及对于切绳子代码最彻底的解释。 1.二分答案与二分查找的不同 首先,二分查找是用来查找一个升序或降序的数组的某个元素,这里不重点讲,上一道我们老师出的题及其代码。 从键盘输入一个整数,用折半查找法找出该数在10个有序整型数组a中的

heipao17的博客 517

二分算法~

二分法最基础的实现就是猜数字游戏 猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了,还是小了,相等表示猜到了。如果猜到,则结束程序。 #include <iostream> using namespace std; int main() { // 输入要猜的数字 int k; cin >> k; // 定义下限,初始化为1 int start = 1; // 定义上限,初始化为

Thujoars的博客 2371

蓝桥杯专项复习——二分查找、二分答案

对应两个模版,起始位置是对应第一个模版,即后面的都符合。终止位置对应第二个模拟,即前面的符合。

2301_80037953的博客 491

ACM预备队week2二分查找与二分答案

二分法初学--NEUQacm第二周作业

Eyumbo的博客 1504

二分、三分查找(玄学)(时不时更新中~

文章目录一、二分法1.概述2.整数二分3.实数二分二、三分法1.概述2.模板及模板题三、二分答案1.概述2.几道题目(1)The Meeting Place Cannot Be Changed(2) 一、二分法 1.概述 2.整数二分 3.实数二分 二、三分法 1.概述 2.模板及模板题 三、二分答案 1.概述 2.几道题目 (1)The Meeting Place Cannot Be Changed 题目链接: https://vjudge.net/contest/406497#problem/B (2)

juruo_c的博客 998
上一篇: 完全背包问题代码细节
下一篇: 最长上升子序列解法及其优化
ResCells
博客等级 码龄4年 191粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值