二分已经给我干哭了。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的情况,差错如何出现的。
或者是二分的格式有问题?
求大佬解释