description:
给定一个长度为n的数列ai,求ai的子序列bi的最长长度len,满足bi and bi−1!=0(2≤i≤len)
n≤105
ai≤109
solution:
code:
#include<cstdio>
#include<iostream>
using namespace std;
int dp[105];
int main()
{
int n;
scanf("%d",&n);
int a;
int ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
int k=1;
for(int j=0;j<=30;j++)
{
if((1<<j)&a)
{
k=max(dp[j]+1,k);
}
}
for(int j=0;j<=30;j++)
{
if((1<<j)&a)
{
dp[j]=max(dp[j],k);
}
}
ans=max(ans,k);
}
printf("%d\n",ans);
return 0;
}