【蓝桥每日一题]-二分类型(保姆级教程 篇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 Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

poj 3104 二分答案

题意: n件湿度为num的衣服,每秒钟自己可以蒸发掉1个湿度。 然而如果使用了暖炉,每秒可以烧掉k个湿度,但不计算蒸发了。 现在问这么多的衣服,怎么烧事件最短。 解析: 二分答案咯。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <c

poj 3258 二分最小值最大

题意: 有一些石头排成一条线,第一个和最后一个不能去掉。 其余的共可以去掉m块,要使去掉后石头间距的最小值最大。 解析: 二分石头,最小值最大。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <c