[BZOJ4300]绝世好题

    xiaoxiao2021-12-14  21

    Description

    给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。

    Input

    输入文件共2行。 第一行包括一个整数n。 第二行包括n个整数,第i个整数表示ai。

    Output

    输出文件共一行。 包括一个整数,表示子序列bi的最长长度。

    Sample Input

    3

    1 2 3

    Sample Output

    2

    HINT

    n<=100000,ai<=2*10^9

    分析

    闲来无事,翻别人博客,看到一个标题为绝世好题的博文,我就天真的点进去了。。。结果。。这明明是数位dp啊。。。。哪里绝世好题了(#`O′)!!! 设f[i]为以第i+1位(二进制位)有1的数结尾得到的序列的最长长度,……然后随便搞一下就好了。。。

    #include <algorithm> #include <cstdio> 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; }
    转载请注明原文地址: https://ju.6miu.com/read-970361.html

    最新回复(0)