博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分法模板
阅读量:730 次
发布时间:2019-03-21

本文共 697 字,大约阅读时间需要 2 分钟。

二分法模板

二分的关键是边界问题,整数的边界为什么要加一减一就是因为l+r>>1的过程中,有可能取到 l 或 r 让 l = mid或 r=mid进入死循环,所以在边界处理时要加一减一.而浮点数就不用考虑这个问题直接/2就可以了

整数二分

分三部分 判断函数,二分函数,主函数;

定义数据位置。。。。。。判定函数bool judge(int mid){
int a//定义初值 if(满足题意) return true; else return false;}二分函数int solve1()//向大的方向查找{
int l,r,mid;//根据题目定初值 while(l

浮点数二分

double solve1()//向大的方向查找{
double l,r,mid;//根据题目定初值 while(r-l>eps)//看题目要求保留几位小数,比如保留6位小数,eps就是1e-8,四位小数就是1e-6; {
mid=(l+r)/2; if(judge(mid)) l=mid; else r=mid; } printf("%.6lf\n",r);}double solve2()//向小的方向查找{
double l,r,mid;//根据题目定初值 while(r-l>eps)//看题目要求保留几位小数,比如保留6位小数,eps就是1e-8,四位小数就是1e-6; {
mid=(l+r)/2; if(judge(mid)) r=mid; else l=mid; } printf("%.6lf\n",r);}

转载地址:http://rtagz.baihongyu.com/

你可能感兴趣的文章