二分查找与模板

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列

模板如下

bool check(int x) // 检查x是否满足某种性质//模板一:最大值的最小值
int bsearch(int l, int r) {while (l < r) {int mid = l + r >> 1;// >> 1等价于除以2if (check(mid)) r = mid;else l = mid + 1;}return l;
}//模板二:最小值的最大值
int bsearch(int l, int r) {while (l < r) {int mid = l + r + 1 >> 1;// >> 1等价于除以2if (check(mid)) l = mid;else r = mid - 1;}return l;
}

例题

P1873

代码如下

#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
int m[1000010],a,b,t=0,ma=0;
bool asd(int x)
{int sum=0;for(int i=0;i<a;i++){sum+=max(t,m[i]-x);}//cout<<sum<<endl;if(sum>=b)return true;elsereturn false;
}
signed main()
{cin>>a>>b;for(int i=0;i<a;i++){cin>>m[i];ma=max(ma,m[i]);}int l=0,r=ma;while(l<r){//cout<<l<<" "<<r<<endl;int mid=(l+r+1)/2;if(asd(mid))l=mid;elser=mid-1;}cout<<l<<endl;return 0;
}

P2440

代码如下

#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
int m[1000010],a,b,t=0,ma=0;
bool asd(int x)
{int sum=0;for(int i=0;i<a;i++){sum+=m[i]/x;}if(sum>=b)return true;elsereturn false;
}
signed main()
{cin>>a>>b;for(int i=0;i<a;i++){cin>>m[i];ma=max(ma,m[i]);}int l=0,r=ma;while(l<r){//cout<<l<<" "<<r<<endl;int mid=(l+r+1)/2;if(asd(mid))l=mid;elser=mid-1;}cout<<l<<endl;return 0;
}

P2678

#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
int m[1000010],a,b,t=0,ma=0,c;
bool asd(int x)
{int sum=0,i=0;for(int j=1;j<=b+1;j++){if(m[j]-m[i]<x){sum++;}elsei=j;}//cout<<x<<" "<<sum<<endl;if(sum<=c)return true;elsereturn false;
}
signed main()
{cin>>a>>b>>c;for(int i=1;i<=b;i++){cin>>m[i];}int l=0,r=a;m[b+1]=a;while(l<r){int mid=(l+r+1)/2;//cout<<mid<<endl;if(asd(mid))l=mid;elser=mid-1;}cout<<l<<endl;return 0;
}

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

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

相关文章

2024新版二开微信发卡小程序源码卡密系统流支持量主

2024新版二开微信发卡小程序源码卡密系统流支持量主。裂变扩展多种领取模式二次开发的发卡小程序源码&#xff0c;其后台采用PHP编写&#xff0c;支持用户通过付费购卡或者观看视频广告领取卡密&#xff0c;该小程序还支持流量主&#xff0c;因为功能需要&#xff0c;我就进行了…

WinSW使用说明

WinSW使用说明 Windows系统下部署多个java程序 场景&#xff1a; 多个java的jar程序&#xff0c;通常来说一个程序使用一个cmd窗口&#xff0c;通过java -jar xxx.jar 命令来运行。这样如果程序多了打开cmd窗口也就多了。 解决&#xff1a; 通过使用WinSW程序&#xff0c;把ja…

VisualSVN Server/TortoiseSVN更改端口号

文章目录 概述VisualSVN Server端更改端口号TortoiseSVN客户端更改远程仓库地址 概述 Subversion&#xff08;SVN&#xff09;是常用的版本管理系统之一。部署在服务器上的SVN Server端通常会在端口号80&#xff0c;或者端口号443上提供服务。其中80是HTTP访问方式的默认端口。…

AndroidFlutter混合开发

为什么要有混合开发 我们知道&#xff0c;Flutter是可以做跨平台开发的&#xff0c;即一份Flutter的Dart代码&#xff0c;可以编译到多个平台上运行。这么做的好处就是&#xff0c;在不降低多少性能的情况下&#xff0c;尽最大可能的节省开发的时间成本&#xff0c;直接将开发…

带文字的短视频:成都鼎茂宏升文化传媒公司

带文字的短视频&#xff1a;视觉与文字的交织艺术 在信息爆炸的时代&#xff0c;短视频以其直观、生动的视觉呈现方式&#xff0c;迅速成为人们获取信息、娱乐休闲的重要渠道。然而&#xff0c;随着人们对内容深度和质量要求的提升&#xff0c;成都鼎茂宏升文化传媒公司单纯的…

项目4 移动电商运维自动化

项目引入 在一次移动电商系统发布更新上&#xff0c;由于我的不小心&#xff0c;错误地删除了生产服务器上的执行代码&#xff0c;导致整个移动电商系统页面都无法访问&#xff0c;最后花很长时间才恢复&#xff0c;这次事故给公司带来了不小的麻烦。 Philip组织整个运维团队进…

多屏多机同控!天途首发瑶光智控地面站

瑶光智控地面站全新发布&#xff01;高性能处理器&#xff0c;高亮三屏显示。内置天途云控系统&#xff0c;融合图传、控制、存储和数据处理等功能与一体&#xff0c;强大算力&#xff0c;高度集成无人机、无人船、无人车和机械狗等多种无人装备进行云控云算。 内置4G公网通讯模…

如何判断NP-hard问题

关键概念回顾 1、P类问题&#xff1a;可以在多项式时间内解决的问题。 2、NP类问题&#xff1a;解可以在多项式时间内验证的问题。NP类问题不一定能在多项式时间内解决&#xff0c;但其解一旦给出&#xff0c;可以在多项式时间内验证。 3、NP-hard问题&#xff1a;任意一个N…

LabVIEW调用外部DLL(动态链接库)

LabVIEW调用外部DLL&#xff08;动态链接库&#xff09; LabVIEW调用外部DLL&#xff08;动态链接库&#xff09;可以扩展其功能&#xff0c;使用外部库实现复杂计算、硬件控制等任务。通过调用节点&#xff08;Call Library Function Node&#xff09;配置DLL路径、函数名称和…

Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作[Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解]还在写0.0… 文章目录 系…

漫威Vision Pro沉浸式互动应用上线,引发行业内外对新型漫画模式的热烈讨论

近日,备受瞩目的漫威Vision Pro沉浸式互动应用正式与全球粉丝见面,这一创新尝试立即在行业内引起了广泛关注和热烈讨论。这款应用不仅融合了视频和轻游戏的元素,更被业内人士形象地称为“交互式沉浸式漫画”,为漫画爱好者带来全新的阅读体验。 在Vision Pro中,用户能够沉…

代码随想录算法训练营day39 | 738.单调递增的数字、968.监控二叉树

738.单调递增的数字 暴力解法超时 贪心解法&#xff1a;从后向前遍历&#xff0c;如果出现strNum[i - 1] > strNum[i]的情况&#xff08;非单调递增&#xff09;&#xff0c;让strNum[i - 1]--&#xff0c;然后strNum[i]给为9 class Solution:def monotoneIncreasingDigi…

道歉性质的《情况说明》应如何写,才能赢得对方的谅解?

道歉性质的《情况说明》应如何写&#xff0c;才能赢得对方的谅解&#xff1f; ——从“成都地铁被诬陷偷拍案”两涉事女的《情况说明》中想到了什么&#xff1f; 据九派新闻报道&#xff0c;在“成都地铁被诬陷偷拍案”中&#xff0c;近日两名当事女子罗某某和曾某某首次公开回…

网关(GateWay)- 快速使用

引入依赖 <!-- gateway --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency> 路由配置 server:port: 8088 spring:application:name: api-gatew…

零基础学会asp.net做网站/公众号/小程序之三:实战初体验(简单程序教学)

关注我&#xff0c;持续分享逻辑思维&管理思维&面试题&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b; 博主在互联网大厂深耕近二十年&#xff0c;从一线码农做起&#xff0c;到人工智能公司副总裁。希望把过往经验总结出来&#xff0…

Flutter 中的 SliverFixedExtentList 小部件:全面指南

Flutter 中的 SliverFixedExtentList 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中&#xff0c;SliverFixedExtentList 是一个高效…

简述:ES6中Generator函数与yield关键字

ES6&#xff1a;Generator 函数 与 yield 关键字 一、Generator 函数 与 yield 引入 语法上&#xff1a;首先可以把它理解成&#xff0c;Generator 函数是一个状态机&#xff0c;封装了多个内部状态。 执行 Generator 函数会返回一个遍历器对象&#xff0c;也就是说&#xff0…

MySQL 命令总结篇-思维导图

一些常用命令以思维导图形式总结在这里了&#xff0c;掌握这些进行MySQL基本操作绝对没问题&#xff0c;加油&#xff01;友友们可以根据这些思维导图进行知识总结。 目录 一、快速上手 二、SQL 语句分类&#xff08;DDL、DML、DQL、DCL&#xff09; 三、数据类型 四、约束…

探索AI去衣技术中的反射应用

在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展已经渗透到了我们生活的方方面面。其中&#xff0c;图像处理和计算机视觉作为AI的重要分支&#xff0c;正不断推动着创新应用的边界。今天&#xff0c;我们要探讨的是一个颇具争议但又技术上颇为有…

MySQL相关知识点梳理

一、MySQL架构 连接层&#xff1a;处理连接&#xff0c;身份验证等。核心服务层&#xff1a;包含权限判断、查询缓存、解析器、查询优化器、执行引擎等。存储引擎层&#xff1a;负责管理数据的底层组件&#xff0c;定义了如何存储、索引和检索数据。数据存储层&#xff1a;与文…