題目鏈結
給定序列\(ai\),求\(ai\)的乙個最長子序列\(bi\),滿足\(b_i\&b_\neq0(2\leq i\leq len)\)。
我們只需要判斷,\(b\)序列的上乙個數與當前數與起來有一位不為0即可。
\(f[i][j]\)表示前\(i\)個數中,滿足\(b\)序列的最後乙個數第\(j\)位為\(1\),的最長子序列長度。
想了想怎麼只會\(\log^2\)的轉移。。
當前能轉移\(ai\)為\(1\)的位。因為所有位轉移到的位置都是一樣的,所以在它們中取個max就行了。
複雜度\(o(n\log a)\)。
//1016kb 64ms
#include #include #include //#define gc() getchar()
#define maxin 300000
#define gc() (ss==tt&&(tt=(ss=in)+fread(in,1,maxin,stdin),ss==tt)?eof:*ss++)
#define bit 30
char in[maxin],*ss=in,*tt=in;
inline int read()
int main()
int ans=0;
for(int i=0; i<=bit; ++i) ans=std::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...