1. 程式人生 > >bzoj4300 絕世好題 DP

bzoj4300 絕世好題 DP

href pan col clu esp scanf zoj name !=

Description

給定一個長度為n的數列ai,求ai的子序列bi的最長長度,滿足bi&bi-1!=0(2<=i<=len)。 題解參考:http://www.cnblogs.com/ljh2000-jump/p/5814135.html
#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; }

bzoj4300 絕世好題 DP