二分[从入门到精通],附蓝桥杯真题【冶炼金属】

目录

二分的基本算法思想

真题

视频讲解:[蓝桥杯]真题讲解:冶炼金属(暴力+二分)

暴力解法

正确解法:二分

二分查找类型题目的通项公式:


如果还没有接触过二分算法的核心思想,可以先去看看二分的基本概念

【C语言】二分查找(含图解)

二分的基本算法思想:

def binary_search(n):  # 二分查找基础概念算法  
    # 初始化搜索范围的下界为0  
    low = 0  
    # 初始化搜索范围的上界为列表长度,注意这里应该是len(ls) - 1,因为Python列表索引是从0开始的  
    high = len(ls) - 1  
      
    # 当搜索范围的下界小于上界时,继续查找  
    while low < high:  
        # 计算中间索引  
        mid = (low + high) // 2  
        # 如果中间索引的值等于要查找的数n,则返回中间索引对应的元素  
        # 注意这里应该是ls[mid]而不是mid,因为我们要比较的是列表中的元素而不是索引,切记
        if ls[mid] == n:
            # 找到了
            return ls[mid]  
        # 如果要查找的数n小于中间索引mid的值,则在上半部分继续查找  
        elif n < ls[mid]:  # 同样是使用ls[mid]来比较元素  
            high = mid - 1  
        # 如果要查找的数n大于中间索引mid的值,则在下半部分继续查找  
        else:  
            low = mid + 1
  

OK,二分算法的基本思想你已经掌握了,上真题

题目分析:

这道题理解起来其实不难,核心点就是我们要使转换前金属个数整除转换后的金属个数的转换效率保持在一个值内。

打个比方假如转换前的金属个数为5,我们想让让他的转换后的个数为2,当V(转换效率,以下同意)为1,很明显5//1=5即转换后金属个数也为5,当V=2,5//2=2,也就是我们两个金属分一组转换成一个高级金属,剩下一个不够转换了。当V=3,5//3=1,只能转换一个了,将其中三个拿出来后剩下两个不足以转换,再往后肯定更不可能了,根据这个思想,我们来尝试做题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值