二分时候有什么需要注意的吗
查看原帖
二分时候有什么需要注意的吗
1062532
MinLand楼主2024/11/7 19:30

二分已经给我干哭了。QAQ 真是不知道问题在哪里。

if(a>0) {
	long double poss=(V*V-v*v)/2.0/a+d;
	int pos=poss;
	if(pos==poss)pos++;
	int l=1,r=m;
	int mid=(l+r)>>1;
	while(l<=r) {
		mid=(l+r)>>1;
		if(p[mid]>pos)r=mid-1;
		else l=mid+1;
	}
	len[++cnt].l=mid;
	len[cnt].r=m;
}

if(a<0) {
	if(v<V) continue;
	int l=1,r=m;
	int mid=(l+r)>>1;
	while(l<=r) {
		mid=(l+r)>>1;
		if(p[mid]<d) {
			l=mid+1;
			continue;
		}
		int vt=v*v+2*a*(p[mid]-d);
		if(vt>V*V)r=mid-1;
		else l=mid+1;
	}
	int vt=v*v+2*a*(p[mid]-d);
	if(vt<V*V) continue;
	len[++cnt].l=d;
	len[cnt].r=mid;
}

这是a>0和a<0的情况,差错如何出现的。

或者是二分的格式有问题?

求大佬解释

2024/11/7 19:30
加载中...