版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zehong1995/article/details/78115667
嚴格遞增LIS
int solve(int x) {
int dp[maxn + 5];
memset(dp, 0x3f, sizeof(dp));
dp[0] = b[0];
int top = 1;
for(int i = 1; i < x; ++ i) {
if(b[i] > dp[top - 1]) {
dp[top] = b[i];
top++;
} else {
int pos = lower_bound(dp, dp + top, b[i]) - dp;
dp[pos] = b[i];
}
}
return top;
}
不嚴格遞增LIS
int solve(int x) {
int dp[maxn + 5];
memset(dp, 0x3f, sizeof(dp));
dp[0] = b[0];
int top = 1;
for(int i = 1; i < x; ++ i) {
if(b[i] >= dp[top - 1]) {
dp[top] = b[i];
top++;
} else {
int pos = upper_bound(dp, dp + top, b[i]) - dp;
dp[pos] = b[i];
}
}
return top;
}