bzoj4300 絕世好題 dp

2022-05-20 18:15:53 字數 682 閱讀 7431

題目描述

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

輸入輸入檔案共2行。

第一行包括乙個整數n。

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

輸出輸出檔案共一行。

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

樣例輸入

31 2 3

樣例輸出2題解

dp設f[i]為選i時前i個元素的最多個數。

那麼就有f[i]=max+1 (a[j]&a[i]!=0)

這樣會tle,於是想優化。

如果a&b!=0,根據定義,a、b的二進位制數中至少有一位都為1。

那麼我們可以開乙個輔助陣列maxn[k],記錄一下所有a[i]中二進位制第k位為1的f[i]的最大值。

然後掃一遍每個a[i]的數字,取最大值加到f[i]裡並更新即可。

#include #include using namespace std;

int a[100010] , f[100010] , maxn[32];

int getnum(int n)

int main()

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

} printf("%d\n" , ans);

return 0;

}

BZOJ 4300 絕世好題 dp

description now give you a number sequence ai,you need to calculate the longest length of subsequence bi,meet the requirements of bi bi 1 is not equal...

BZOJ 4300 絕世好題 Dp

time limit 1 sec memory limit 128 mb submit 2197 solved 1175 submit status discuss 給定乙個長度為n的數列ai,求ai的子串行bi的最長長度,滿足bi bi 1 0 2 i len 輸入檔案共2行。第一行包括乙個整數n...

BZOJ4300絕世好題(DP)

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