zoukankan      html  css  js  c++  java
  • bzoj千题计划190:bzoj4300: 绝世好题

    http://www.lydsy.com/JudgeOnline/problem.php?id=4300

    f[i] 表示第i位&为1的最长长度

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    void read(int &x)
    {
        x=0; char c=getchar();
        while(!isdigit(c)) c=getchar();
        while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
    }
    
    int f[31];
    int bit[31];
    
    int x;
    
    int main()
    {
        int n;
        read(n);
        bit[0]=1;
        for(int i=1;i<=30;++i) bit[i]=bit[i-1]<<1;
        int tmp;
        while(n--)
        {
            read(x);
            tmp=0;
            for(int i=0;i<=30;++i)
                if(x&bit[i]) tmp=max(tmp,f[i]);
            tmp++;
            for(int i=0;i<=30;++i)
                if(x&bit[i]) f[i]=tmp;
        }
        int ans=0;
        for(int i=0;i<=30;++i) ans=max(ans,f[i]);
        cout<<ans;
    }

    4300: 绝世好题

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 2372  Solved: 1281
    [Submit][Status][Discuss]

    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

  • 相关阅读:
    第4章 Android移植环境搭建
    第3章 Android移植平台工具介绍
    第2章
    第1章 Android系统的编译和移植实例:
    nfs
    TFTP服务器搭建
    根系统制作
    nfs挂载
    uboot的编译
    交叉工具链的搭建方法
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/8191842.html
Copyright © 2011-2022 走看看