设f[i]为以第i+1位(二进制位)有1的数结尾得到的序列的最长长度,……
据说是SB题,然而智商再次下线,感觉没救了OLZ…
AC code:
#include <cstdio>
#include <algorithm>
using namespace std;
const int K=1<<5;
int n,ans;
int f[K];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int t,mx=0;
scanf("%d",&t);
for(int j=0;j<K;j++) if(t&(1<<j)) mx=max(mx,f[j]+1);
for(int j=0;j<K;j++) if(t&(1<<j)) f[j]=mx;
ans=max(ans,mx);
}
printf("%d\n",ans);
return 0;
}