【LG P4310】绝世好题
时间:2022-05-11 13:01
分析
令 \(dp_i\) 表示数列到目前为止最后一项第 \(i\) 位为 \(1\) 的最大子序列长度,每读入一个数时就大力转移。一个数可以被它所有的二进制位的 \(dp\) 值转移,然后把它转移到它的所有二进制位的 \(dp\) 值上。
复杂度 \(O(n\log_2n)\)。
代码
#include
using namespace std;
int f[32];
int main() {
int n;
scanf("%d",&n);
int ans=0;
for(int i=1,x; i<=n; i++) {
scanf("%d",&x);
int k=1;
for(int j=0; j<=30; j++) {
if((1<