二分答案0.2

二分答案

0.2


目录


基本概念

二分答案是对答案用二分的方式进行枚举,通过缩小范围逐步逼近答案,是一种高效的枚举方式,主要有二分小数及二分整数两种.通常体现为”最 值最 “.在实际做题时不一定严格二分,三分甚至更多分都可以.
在二分时,要注意r的范围,如果过大,会引起不必要的时间消耗.一般不用理论最大值,即整数最大总和,根据估算推断一下,实在不放心可以在读入数据是处理一下(有些题目要求比较严格,r的值就不能超出给定范围).
判断函数是二分的主要考点,在编写时注意即时成立和即时错误的退出判定,在累加时通常将初始值设为1(默认至少有一种情况成立).


二分整数

实现模版

  • ans是二分的结果,根据判断条件决定是’l-1’还是’r+1’.值得注意的是两种情况并不一定相同,一般根据判断函数的关系,正确返回的那个作为结果.
bool ju(int s);
int l=0,r=10000000;
while(l<=r)
    {
        int mid=l+r>>1;
        ju(mid)?r=mid-1:l=mid+1;
    }
printf("%d\n",ans);

例题讲解

  • P1316 存在性问题.只要达到B直接退出,注意一下高精度.
  • P1396 二分最短路入门,二分一下拥挤度
  • p2920 排序二分,贪心一下
  • p2183 小于直接扔,算个数
  • p1902 二分搜索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值