您的位置:首页 > 编程语言 > C语言/C++

二分答案0.2

2017-12-21 20:29 204 查看

二分答案

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 二分搜索
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 二分