int search() { int l=1;r=L,mid,ans=-1; // l 左 r 右 mid 二分 ans 答案 while(l<=r){//左<=右 mid=(l+r)>>1;//除以2,这样比较快 if(check(mid)) ans=mid r=mid-1; //表示不合法的解个数是否大于上线 //check 自己设的检查是否符合的函数 else l=mid+1; } return ans; } //这份代码是最小化答案的 //如果要最大化答案,把r = mid - 1和l = mid + 1换一下就好