第二讲 二分法

news/2025/1/26 17:14:35/文章来源:https://www.cnblogs.com/ALANYLLL/p/18691991

第一题 二分查找
输入一个整数 n 和 n 个整数,保证这 n个整数已经按照从小到大进行排序。
然后输入一个整数 q( q≤100000)代表 q次查询。接下来 q 行,每行含有一个整数 m ,代表一次查询。对于每次查询,使用二分查找判断 m 是否在之前输入的 n个整数中出现过。如果出现,输出一行 "Yes" ,否则输出 "No" 。
思路:运用二分模板查找m

第二题 A-B数对
给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。
思路:因为C是确定的,所以可以先遍历B,再用二分法寻找A。因为ai<2的30次方,C<2的30次方,所以要用long long

第三题 分巧克力
儿童节那天有 K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。
小明一共有 N块巧克力,其中第 i块是 Hi×Wi的方格组成的长方形。
为了公平起见,小明需要从这 N块巧克力中切出 K块巧克力分给小朋友们。切出的巧克力需要满足:

  1. 形状是正方形,边长是整数。
  2. 大小相同。
    例如一块 6×5的巧克力可以切出 6 块 2×2的巧克力或者 2 块 3×3的巧克力。
    当然小朋友们都希望得到的巧克力尽可能大,你能帮小 Hi计算出最大的边长是多少么?
    思路:首先check函数检验x是否能做切出巧克力边长,若满足切出巧克力数cnt>=人数k,则返回1;接着通过二分答案的方法求出最大边长;因为这题属于尽量向右寻找答案,在二分时注意mid=(l+r+1)/2.

    第四题 卡牌
    这天,小明在整理他的卡牌。
    他一共有 n种卡牌,第 i种卡牌上印有正整数数 i(i∈[1,n]),且第 i种卡牌现有 ai 张。
    而如果有 n 张卡牌,其中每种卡牌各一张,那么这 n张卡牌可以被称为一套牌。小明为了凑出尽可能多套牌,拿出了 m张空白牌, 他可以在上面写上数 i,将其当做第 i种牌来凑出套牌。然而小明觉得手写的牌不太美观,决定第 i种牌最多手写 bi 张。
    请问小明最多能凑出多少套牌?
    思路:因为可以用空白牌补充每种卡牌不够的数量,可以通过二分答案寻找卡牌套数最大值。需要验证空白牌的数量是否够补齐每种牌不够的数量之和,并且因为第i种牌最多手写bi张,所以还需验证假设手写bi张第i种牌能否达到mid。同时在二分时注意r的值应该是4e5,因为最大卡牌套数可能是(ai+bi)。我最开始一直r=2e5,导致多次WA。

    学习总结:学习了二分法,其while(l<=r)和while(l<r)两种不同写法。还有在二分中尽量向右寻找答案和尽量向左寻找答案两种情况中mid的公式不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876029.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

draw.io(免费流程图制作工具) v26.0.7 中文绿色版

draw.io是一款免费的在线图表绘制工具,它提供了强大的功能和易于使用的界面,适用于各种绘图需求。 软件功能 1. 多种类型的图表:draw.io支持创建各种类型的图表,包括流程图、组织结构图、UML图、网络拓扑图、平面图等。2. 自定义图表元素:用户可以根据自己的需求,自定义…

Svelte 最新中文文档翻译(6)—— if、each、key、await 逻辑区块

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

java中的集合ArrayList

创建集合对象有3种形式 1,不需要传递构造参数,直接new就可以,此时底层数组为空数组。 2,构造参数需要传递一个int类型的值, 用于设置底层数组的长度 3,构造参数需要传递一个Collection集合类型的值,用于将集合中的数据放置在当前的集合中。 第1种方式创建数组 package goodSt…

IDM下载器(Internet Download Manager) v6.42.27 直装破解版

Internet Download Manager(IDM)是一款功能强大的下载管理软件,可以帮助用户加快下载速度,管理下载任务,并能够恢复中断或损坏的下载任务。 软件功能 多线程下载:IDM支持多线程下载,可以同时下载多个文件,提高下载速度。定时下载:用户可以设置定时下载任务,方便管理…

Exadata磁盘写入性能差,导致数据库出现大量free buffer waits

1、故障概述 某客户的Exadata上,运行着很多套ORACLE数据库,在每个月的征期内,业务系统经常出现卡顿的现象,主要表现为业务数据写入慢,甚至出现业务写入超时的情况。2、故障分析 2.1 AWR分析 (1).分析数据库的AWR报告。(本报告取自于业务高峰期)从数据库的TOP10等待事件…

zkap_春节赛

题目情况web welcome_to_zkaqctf nodejs题目。给出附件包含后端源码,app listen部分根据本地nodejs监听调式需要,自行添加,用node --inspect app.js命令启动调试监听 // const host = 127.0.0.1; // 主机名或IP地址 // const port = 9999; // const app = fastify(); app.l…

AI 语音独角兽 ElevenLabs C 轮融资估值超 30 亿美元;港科大 Llasa TTS:15 秒声音克隆支持中英双语

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

The Locker Puzzle

The Locker Puzzle 今天刷到一个很有趣的著名概率题,如果有和我一样闲的人可以一起看看。 Philippe Flajolet和Robert Sedgewick在2009年提出了“百囚犯问题(The Locker Puzzle)”。 问题描述 在监狱中有100名囚犯,被编号为1-100号。典狱长决定给囚犯们一次特赦的机会,条件…

DDR3 memory type not supported

问题现象 电脑开机之后无法进入系统,而是显示下图: 解决方法 以为是内存条金手指有灰尘导致无法正常读取,插拔擦拭之后问题依旧。在网上查阅资料之后发现可能是内存条的电压与原装的不同,把加装的第二根内存取下之后,电脑正常。hp技术支持中心:https://h30434.www3.hp.co…

Python数据格式转换神器-提高办公效率

Python办公技巧,数据转换神器,提升工作效率一、引言在工作日常里,数据转换总是让人头疼?别急,今天揭秘一个超级实用的Python技巧,帮你轻松搞定各种数据格式转换,提升工作效率不是梦! 场景1:你手头有一堆CSV格式的(逗号分隔符)数据,其他部门或公司需要你提供其中几列关…

Python Functools模块

代码:#coding=utf-8import functools from functools import cache from functools import cached_property, lru_cache from functools import partial, partialmethod from functools import singledispatch, singledispatchmethod from functools import update_wrapper, w…

F12调试应用:强行查看洛谷个人主页

1.前言 众所周知,洛谷的个人主页常常有些不得了的东西,但是:(洛谷估值第二名%%%)这个系统维护每次都拦着我们。 有一个比较常用的方法就是删掉域名.cn,访问外国服务器(天天炸)。所以必须要有更可靠的方法。 2.F12大法妙 这时候,我们就可以按下F12打开检查。按下左上角…