• bzoj 1270 DP


    w[i,j]代表高度j,第i颗树的时候的最大值

    那么w[i,j]:=max(w[i,j+1],w[k,j+heigh])+sum[i,j];

    但是这样枚举是n^3的,我们发现转移的第二个选择w[k,j+heigh]与当前

    第I颗树没有关系,所以记录一个高度为H的时候时的最大值直接O(1)转移就行了

    我也不知道咋回事儿,pascal一直RE,一年前能A的代码现在还是RE,然后向管理员

    联系了下,他们说数据没有问题,还把数据发过来了,一共5个点,最后一个点的in竟然

    30MB。。。,挂接都挂不了。。。

    /**************************************************************
        Problem: 1270
        User: BLADEVIL
        Language: Pascal
        Result: Runtime_Error
    ****************************************************************/
     
    //By  BLADEVIL
    var
        n, h, d                     :longint;
        tree                        :array[0..2010,0..2010] of longint;
        w                           :array[0..4010,0..4010] of longint;
        p                           :array[0..10010] of longint;
        i, j                        :longint;
        k                           :longint;
        ans                         :longint;
         
    function max(a,b:longint):longint;
    begin
        if a>b then max:=a else max:=b;
    end;
         
    begin
        readln(n,h,d);
        for i:=1 to n do
        begin
            read(tree[i,0]);
            for j:=1 to tree[i,0] do
            begin
                read(k);
                inc(tree[i,k]);
            end;
        end;
        for j:=h downto 1 do
            for i:=1 to n do
            begin
                w[i,j]:=w[i,j+1]+tree[i,j];
                if j+d<=h then w[i,j]:=max(w[i,j],p[j+d]+tree[i,j]);
                p[j]:=max(p[j],w[i,j]); 
            end;
        ans:=-maxlongint;
        for i:=1 to n do ans:=max(ans,w[i,1]);
        writeln(ans);
    end.
  • 相关阅读:
    windows server 2003打补丁升级后,网站上的aspx页面打不开的解决办法
    为什么IM还有生存空间
    CTO俱乐部深圳:移动互联网发展与趋势 活动分享
    为word文档创建文档结构图的的步骤
    面试官面试总结
    dll与exe通信的VC++程序实例源码
    openfire的集群研究
    如何有效地记忆与学习
    How The Kernel Manages Your Memory
    C语言循环小技巧
  • 原文地址:https://www.cnblogs.com/BLADEVIL/p/3496772.html
Copyright © 2020-2023  润新知