zoukankan      html  css  js  c++  java
  • BZOJ-1010 玩具装箱

    DP+斜率优化

    DP方程为dp[i]:=max(dp[j]+sum[i]-sum[j]+i-j-1)(j<i)

    然后斜率优化。。。。

    • var

    • n,i,l,s,t,a,b,c:longint;

    • num,dp,xl,sum:array[0..50005] of int64;

    • begin

    • read(n,l);

    • for i:=1 to n do read(num[i]);

    • for i:=1 to n do sum[i]:=sum[i-1]+num[i];

    • for i:=1 to n do sum[i]:=sum[i]+i;

    • s:=1;t:=1;

    • for i:=1 to n do

    •   begin

    •   while s<t do

    •     begin

    •     a:=xl[s];

    •     b:=xl[s+1];

    •     if 2*(sum[i]-1-l) > ((dp[b]-dp[a]+sum[b]*sum[b]-sum[a]*sum[a])/(sum[b]-sum[a])) then

    •       begin

    •       xl[s]:=0;inc(s);

    •       end

    •     else break;

    •     end;

    •   a:=xl[s];

    •   dp[i]:=dp[a]+(sum[i]-sum[a]-l-1)*(sum[i]-sum[a]-l-1);

    •   inc(t);

    •   xl[t]:=i;

    •   while t-s>1 do

    •     begin

    •     a:=xl[t-2];b:=xl[t-1];c:=xl[t];

    •     if (dp[b]-dp[a]+sum[b]*sum[b]-sum[a]*sum[a])/(sum[b]-sum[a]) >

    •        (dp[c]-dp[b]+sum[c]*sum[c]-sum[b]*sum[b])/(sum[c]-sum[b]) then

    •       begin

    •       xl[t-1]:=xl[t];xl[t]:=0;dec(t);

    •       end

    •     else break;

    •     end;

    •   end;

    • write(dp[n]);

    • end.

  • 相关阅读:
    Linux密码文件介绍
    MongoDB与微服务
    MongoDB应用场景及选型
    MongoDB性能诊断工具
    1.7每日进度
    《架构即未来》(3)
    《架构即未来》(2)
    论面向服务架构设计
    浅谈MVC设计模式
    《架构即未来》(1)
  • 原文地址:https://www.cnblogs.com/NanoApe/p/4396762.html
Copyright © 2011-2022 走看看