给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。
标签:
对于100%的数据,1<=n<=100000,ai<=10^9。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int maxbit[35], a, n; void update(int x, int delx) { for (int i = 0; x != 0; (x >>= 1), ++i) if (x & 1) maxbit[i] = max(maxbit[i], delx); } int query(int x) { int maxt = 0; for (int i = 0; x != 0; (x >>= 1), ++i) if (x & 1) maxt = max(maxt, maxbit[i]); return maxt; } int main() { scanf("%d", &n); scanf("%d", &a); int ans = 1; memset(maxbit, 0, sizeof(maxbit)); update(a, 1); for (int i = 1; i < n; ++i) { scanf("%d", &a); int maxnow = query(a) + 1; update(a, maxnow); ans = max(ans, maxnow); } printf("%d\n", ans); return 0; }
标签:
原文地址:http://www.cnblogs.com/albert7xie/p/4963400.html