学途智助
首页
分类
标签
关于网站
登录
eeettt123
2024-11-19
39
作者编辑
二分类的处理
二分类 的处理 https://zhuanlan.zhihu.com/p/40579713  王道解法,更加直接。 记录值与二分查找 各自+1 就可以 # **l和r代表的“成本值”均可行,且有一个ans变量记录当前的最优** ``` while (l<=r) { int mid=(l+r)/2; if (check(mid)) { ans=mid; r=mid-1; } else l=mid+1; }printf("%d",ans); ``` 1 l<=r 2. 直接加一减一 。(查找时候加个判断 ) # l和r代表的“成本值”均可行,最后的答案是l或r (这是找左右边界界的) 不记录纸 ``` //边界问题一句话总结:左界左不要,右界右不要,右界中往右偏(+1) //本质用求mid时候向上向下取整来理解 本来就向下取整了,左界在-1 会遗漏的,左界等于mid既可,右界=r+1. 向上取整的左界=mid+1,右界=mid // int binsearchl (int a[],int l,int r,int b){ l=l,r=r; while(l<r) {int mid=l+r>>1; if(a[mid]>=b) r=mid; else l=mid+1; } if(a[l]==b)return l;else return -1; } int binsearchr (int a[],int l,int r,int b){ while(l<r) {int mid=l+r+1>>1; if(a[mid]<=b) l=mid; else r=mid-1; //else if 表示三叉并列 和 if ;if else 不一样 //原来记忆两种二分是有意义的 } if(a[r]==b)return r; else return -1; } ```
C/C++
算法竞赛
赞
博客信息
作者
eeettt123
发布日期
2024-11-19
其他信息 : 其他三字母的人名首字母都是其他同学发布的哦