警示后人
查看原帖
警示后人
275860
___A__楼主2023/10/19 15:56

如果你WA1 4 6且想要用二分找到第一个位置使得可以放在最后一个集合 不可以

int l=1,r=m,idx=-1;
while(l<=r){
    int mid=(l+r)/2;
	if((a[i]+mid)*(a[i]+mid)>=(a[i]+1)*(a[i]+1)){
	    idx=mid,r=mid-1;
	}
	else{
	    l=mid+1;
	}		
   }

而是要严格大于 不然会多算一部分

2023/10/19 15:56
加载中...