zoukankan      html  css  js  c++  java
  • [luogu4310] 绝世好题 (递推)

    传送门

    题目描述

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

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

    输入样例#1: 复制

    3
    1 2 3

    输出样例#1: 复制

    2

    说明

    对于100%的数据,1<=n<=100000,ai<=10^9。

    题解

    da[i]为二进制下第i+1位为1的长度
    转移很好想
    我居然还想了半天qwq
    code:

    //By Menteur_Hxy
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<algorithm> 
    using namespace std;
    
    const int N=100010;
    int n,x,ans;
    int da[40];
    
    int main() {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) {
    		scanf("%d",&x);
    		int ma=0;
    		for(int i=0;i<=30;i++) if((1<<i)&x) ma=max(ma,da[i]+1);
    		for(int i=0;i<=30;i++) if((1<<i)&x) da[i]=ma;
    		ans=max(ans,ma);
    	}
    	printf("%d",ans);
    	return 0;
    }
    
    版权声明:本文为博主原创文章,未经博主允许不得转载。 博主:https://www.cnblogs.com/Menteur-Hxy/
  • 相关阅读:
    030-B+树(三)
    028-B+树(一)
    027-B树(二)
    026-B树(一)
    025-红黑树(六)
    024-红黑树(五)
    023-红黑树(四)
    022-红黑树(三)
    021-红黑树(二)
    020-红黑树(一)
  • 原文地址:https://www.cnblogs.com/Menteur-Hxy/p/9264653.html
Copyright © 2011-2022 走看看