在这题中,本蒟蒻提交了好几发,其中前两发T掉了(Time Limit Exceeded on Test 13):
int Binary_search()
{
int l=1,r=n,ans;
while (l<r)
{
int mid=(l+r)>>1;
if (check(mid)) ans=mid,r=mid;
else l=mid+1;
}
return ans;
}
然后改了改这段代码,就A了:
int Binary_search()
{
int l=1,r=n;
while (l<r)
{
if (l+1==r||l==r)
{
if (check(l)) return l;
else return r;
}
int mid=(l+r)>>1;
if (check(mid)) r=mid;
else l=mid;
}
}
为啥呀?不懂,二分到底怎么写?
我太菜了,到现在连二分都不会写……丢人……