bzoj4300 绝世好题 DP
Description
给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。
#include<bits/stdc++.h> using namespace std; int f[33]; int a[1000005]; int n,cnt,ans; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); cnt=0; for(int j=0;j<=30;j++){ if((a[i]&(1<<j))!=0)cnt=max(f[j]+1,cnt); } for(int j=0;j<=30;j++){ if((a[i]&(1<<j))!=0)f[j]=max(f[j],cnt); } } for(int i=0;i<=30;i++)ans=max(ans,f[i]); printf("%d",ans); return 0; }