题型:同Poj 1631.

思路:注意非升子序列需要考虑相等的情况,在二分的时候需要注意。

if (x > best[0]) {
best[
0] = x;
continue;
}
if (x <= best[sol-1]) { //key
best[sol++] = x;
continue;
}
int low = 0, high = sol-1, mid, ans;
while (low <= high) { //key
mid = (low+high)/2;
if (best[mid] < x) {
high
= mid - 1;
ans
= mid;
}
else if (best[mid] > x) {
low
= mid + 1;
}
else {
low
= mid + 1;
ans
= mid;
}
}
best[ans]
= x;

 

 

相关文章: