bzoj4300 絕世好題

2021-07-24 07:54:13 字數 916 閱讀 6627

給定乙個長度為n的數列ai,求ai的子串行bi的最長長度,滿足bi&bi-1!=0(2<=i<=len)。

輸入檔案共2行。

第一行包括乙個整數n。

第二行包括n個整數,第i個整數表示ai。

輸出檔案共一行。

包括乙個整數,表示子串行bi的最長長度。

3

1 2 3

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

by oxer

表示一開始看錯題。。以為 b 是一段連續的序列,就用o(n)時間算出來。。

好吧 b 序列在 a 中不一定是連續的,那麼就可以用到最長不下降序列的思想,但o(n²)顯然要超時,就想優化。

我們知道,如果將兩個數轉換成二進位制數的形式,它們在相同位上都為1的話,這兩個數相&肯定不為0。那麼我們可以直接列舉位數,f[i] 表示前面選的數第 i 位都為1一共有多少個數,列舉位數dp即可。

**:

#include

#include

#include

#include

using

namespace

std;

int f[35],a[100005];

int main()

int ans=0;

for(int i=0;i<=31;i++)

ans=max(ans,f[i]);

printf("%d",ans);

}

好短

BZOJ4300 絕世好題

description 給定乙個長度為n的數列ai,求ai的子串行bi的最長長度,滿足bi bi 1 0 2 i len input 輸入檔案共2行。第一行包括乙個整數n。第二行包括n個整數,第i個整數表示ai。output 輸出檔案共一行。包括乙個整數,表示子串行bi的最長長度。sample in...

bzoj4300 絕世好題

絕世傻題 既然要求bi andb i 1 0,那麼就讓他一定成立咯。從1到n列舉,當前數為x,前面的數都操作完了,那麼 fx max 1,然後再更新一下gi 沒了 淦。一開始寫了發trie。寫完才發現根本不對啊tat 好虛啊老是犯這種錯 include define rep i,a,b for in...

BZOJ 4300 絕世好題

de scri ptio n 給定乙個長度為 n 的數列ai 求ai 的子串行bi 的最長長度,滿足bi bi 1 0 2 i len in put 輸入檔案共 2 行。第一行包括乙個整數n。第二行包括 n 個整數,第 i個整數表示ai out put 輸出檔案共一行。包括乙個整數,表示子串行bi ...