POJ 1887 Testing the CATCHER[最长非升子序列O(nlog(n))]

题型:同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;

 

 

你可能感兴趣的:(catch)