整数二分模板 while(x<=y)//<=或<根据来定,如果从0开始则<,从1开始则<= { mid=(x+y)/2; if(check(mid)==1)//check函数用来检查答案 { x=mid+1;//注意 ans=mid; } else y=mid-1;//注意 } 实数二分模板 double l=...,r=...; while(r-l>1e-5)//精度视题目而定(最好开大一点) { double mid=(l+r)/2; if(check(mid)) l=mid;//注意,由于是实数,精度需要调高,不能+1,下同上 else r=mid;//注意 }