int l = -1, r = (int) a[i].size() - 1; while(l < r) { int m = l + r + 2 >> 1; if(a[i][m] >= v) l = m; else r = m - 1; }
a是一个vector,下标从零开始,为啥m是l+r+2>>1l+r+2 >>1l+r+2>>1而不是l+r>>1l + r >> 1l+r>>1?