題目描述
給定乙個長度為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...