struct LIS {
int q[MAXn];
int l = 1, r = 1;
void init() {
r = 2;
q[1] = a[1];
int t = r;
for (int i = 2; i <= n; i++) {
if (a[i] > q[r - 1])q[t = r++] = a[i];
else {
t = std::lower_bound(q + l, q + r, a[i]) - q;
q[t] = a[i];
}
}
}
};
LIS (Longest Increasing Sequence)
最新推荐文章于 2024-10-16 19:08:56 发布