【蓝桥每日一题]-二分类型(保姆级教程 篇3) #路标设置 #跳石头

2023-11-03 15:01

本文主要是介绍【蓝桥每日一题]-二分类型(保姆级教程 篇3) #路标设置 #跳石头,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天接着讲二分题型

目录

题目:路标设置

 思路: 

题目:跳石头

 思路: 

          

     

题目:路标设置

     

       

思路: 

   
求:放n个路标后的最小空旷指数
二分查找:对空旷指数进行二分
二分依据: 该空旷指数下放的路标数
    

#include <iostream>                      
using namespace std;
int main(){int len,n,k,a[100005],now=0,before=0,l=0,r=0;cin>>len>>n>>k;for(int i=0;i<n;i++){            //a[i]存放每段的距离,之后不需要再计算cin>>now;a[i]=now-before;before=now;if(r<a[i] )  r=a[i];       //r存放最大的a[i]}a[n]=len-before;  if(r<a[n]) r=a[n];if(k==0){                    //特判特殊情况cout<<r;	return 0;}int mid,cnt,tmp,yu;while(l<=r){mid=(l+r)/2,cnt=0,tmp;     //cnt是每个区间a[i]中放置的路标数for(int i=0;i<=n;i++){tmp=a[i];cnt+=tmp/mid;yu=tmp%mid;if(yu==0&&tmp>=mid)cnt--;
//			while(tmp>mid){            //使用除法也可以
//				cnt++;
//				tmp-=mid;
//			}}if(cnt<=k) r=mid-1;            //因为要最小空旷指数,所以用第一类二分模型else l=mid+1;                  }cout<<l;                 //见到l就是第一类二分模型(l哪里没有=):返回第一个重复的数return 0;
}

     

      

题目:跳石头

      

思路: 

    
求:搬n个石头后的最短跳跃的最大值
二分查找:对最短跳跃进行二分
二分依据:该最短跳跃下需要搬走的石头数
    

#include <iostream>                       
#define maxn 500010
using namespace std;
int d,n,m;
int a[maxn];
int l,r,mid,ans;
bool judge(int x){   //x表示当前二分出的距离情况int tot = 0;     //tot记录以当前答案需要移走的实际石头数int i = 0;       //i代表下一块石头的编号int now = 0;     //now代表人当前在什么位置while (i < n+1){ //n+1才是终点i++;if (a[i] - a[now] < x) tot++;    //把前面n个小于x距离的石头搬走else now = i;                    //前面没有可以搬走的石头,我们就跳过去,再考虑下一块对应的情况}if (tot > m)     return false;       //搬走需要次数过多,不满足题意else    return true;
}
int main(){cin>>d>>n>>m;    //d代表总长度,也就是右边界;n块石头;要移走m块(思考时候不要被这个m限制)for (int i=1;i<=n;i++)  cin>>a[i];a[n+1] = d;     //n+1是终点l = 1; r = d;while(l<=r){mid =(l+r)/2;if(judge(mid)) l=mid+1;else r=mid-1;}cout << r << endl;//输出r也可以return 0;
}

这篇关于【蓝桥每日一题]-二分类型(保姆级教程 篇3) #路标设置 #跳石头的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/338980

相关文章

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变