• BZOJ4300:绝世好题


    Description

    给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。

    Input

    输入文件共2行。
    第一行包括一个整数n。
    第二行包括n个整数,第i个整数表示ai。

    Output

    输出文件共一行。
    包括一个整数,表示子序列bi的最长长度。

    Sample Input

    3
    1 2 3

    Sample Output

    2

    HINT

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

    题解:

    当要求以ai结尾的最长b串时,ai可以接在所有满足(j<i)与(ai and aj>0)的aj上。

    假设aj and(1 shl x)>0,则所有满足(j<i)与(ai and(1 shl x)>0)的ai都可以接上。

    则只需要用F[x]记录以满足ai and(1 shl x)>0的ai结尾的b串的最大长度,进行DP时,将ai转为二进制,接在对应的F[x],在转移到对应的F[x]上。

    代码:

     1 uses math;
     2 var
     3   i,j,k,l,n,m,ans:longint;
     4   a:array[0..32]of longint;
     5   x,y:int64;
     6 begin
     7   readln(n);
     8   for i:=1 to n do
     9   begin
    10     read(x); y:=x; k:=0; l:=1;
    11     while x>0 do
    12     begin
    13       if x and 1=1 then k:=max(a[l]+1,k);
    14       inc(l); x:=x div 2;
    15     end;
    16     ans:=max(ans,k); l:=1;
    17     while y>0 do
    18     begin
    19       if y and 1=1 then a[l]:=max(a[l],k);
    20       inc(l); y:=y div 2;
    21     end;
    22   end;
    23   writeln(ans);
    24 end.
    View Code
  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/GhostReach/p/6257045.html
Copyright © 2020-2023  润新知