【蓝桥每日一题]-二分类型(保姆级教程 篇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

相关文章

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方