记录编号 601506 评测结果 AAAAAAAAAA
题目名称 2980.绝世好题 最终得分 100
用户昵称 Gravatar淮淮清子 是否通过 通过
代码语言 C++ 运行时间 0.108 s
提交时间 2025-06-25 16:25:27 内存使用 4.48 MiB
显示代码纯文本
#include<iostream>
using namespace std;

const long long MAXN = 100005;

long long n,cnt = 0;
long long a[MAXN];
long long dp[32];
bool f[MAXN][32];

void Ten_to_Two(long long x,int index){
    int last = 31;
    while(x){
        f[index][last] = x % 2;
        last --;
        x /= 2;
    }
}

int main(){
	freopen("bzoj_4300.in","r",stdin);
	freopen("bzoj_4300.out","w",stdout);
	cin.tie(0) -> ios::sync_with_stdio(0);
	cin >> n;
    for(long long i = 1;i <= n;i ++){
        cin >> a[i];
        Ten_to_Two(a[i],i);
    }
    for(long long i = 1;i <= n;i ++){
        long long sum = 0;
        for(long long j = 0;j <= 31;j ++){
            if(f[i][j]) sum = max(sum,dp[j]);
        }
        sum ++;
        for(long long j = 0;j <= 31;j ++){
            if(f[i][j]) dp[j] = max(dp[j],sum);
        }
        cnt = max(cnt,sum);
    }
    cout << cnt << '\n';
	return 0;
}