BZOJ4300 絕世好題

2021-08-18 18:30:40 字數 900 閱讀 8727

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

hint

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

題解博主只想到了o(

n2) o(n

2)的做法,所以仔細鑽研了網上大佬的部落格,發現題解只有三個字:

臥槽!!果然是我太菜了嗎orz?!

其實,因為是位運算,所以我們需要用dp[i]維護第i位為1的序列最長序列的長度,新加入乙個數的時候,我們只需要檢視它二進位制下的每一位是否為一,如果那一位為一的話,那麼就可以更新dp[i]的值。

**

#include

using

namespace

std;

const

int m=1e5+5;

int x[m],dp[40],n;

void in()

void ac()

int ans=0;

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

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

printf("%d",ans);

}int main()

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 ...