4300 絕世好題

2021-07-24 15:04:40 字數 1109 閱讀 5291

time limit: 1 sec  

memory limit: 128 mb

submit: 1328  

solved: 724 [

submit][

status][

discuss]

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

輸入檔案共2行。

第一行包括乙個整數n。

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

輸出檔案共一行。

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

1 2 3

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

by oxer [

submit][

status][

discuss]

對於條件bi & bi-1 != 0,,要滿足它,只要滿足!= 0即可,也就是說,bi & bi-1的值是多少,根本無關緊要

令fi為以位置i結尾的最長子序列長度

定義gi為以最後乙個數字轉換為二進位制數碼後第i位為1的最長子序列長度

這樣轉移和更新log就完成了

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int maxn = 1e5 + 10;

int n,ans,a[maxn],f[maxn],g[31];

int main()

{ #ifdef dmc

freopen("dmc.txt","r",stdin);

#endif

cin >> n;

for (int i = 1; i <= n; i++) scanf("%d",&a[i]);

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

{ for (int j = 0; j <= 30; j++)

if (a[i]&(1<

4300 絕世好題

題目鏈結 題目大意 給定乙個長度為n的數列ai,求ai的子串行bi的最長長度,滿足bi bi 1 0 2 i len 題解 有顯然 的o n 2 li s做法 考慮轉移條件為aj ai 0,即 aj和a i 的二進位制至少有一位同時為1,f i 表示最後乙個數二進位制第i位為1的最優解,於是列舉的複...

4300 絕世好題

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

BZOJ4300 絕世好題

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