#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
long long maxn[40];
long long a[N];
long long dp[N];
int n;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=30;j++)
		{
			if(a[i]&(1<<j))
			{
				dp[i]=max(dp[i],maxn[j]+1);	
			} 
		}
		for(int j=0;j<=30;j++)
		{
			if(a[i]&(1<<j))
			{
				maxn[j]=max(dp[i],maxn[j]);	
			} 
		}
	}
	cout<<dp[n]<<'\n';
	return 0;
}

这份代码拿到了满分的好成绩,但这份代码是错误的。

因为以 ana_n 结尾的序列不一定为最优的。

Hack: in:

3
6 2 1

ans:

2

out:

1

1 条评论

  • @ 2025-12-5 17:30:54

    哈哈哈我不看帖

    😄 1
    🤣 1
    • 1

    信息

    ID
    27
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    142
    已通过
    21
    上传者