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.

  • 相关阅读:
    jQuery-选择器及属性修改
    jQuery 基础理论
    CSS 之 BFC(块级格式化上下文)
    H5--Web Storage
    H5 -WebWorker
    H5 --拖放
    nodejs Multer中间件
    k8s pod
    kubernetes
    优化CUDA数据传输
  • 原文地址:https://www.cnblogs.com/NanoApe/p/4396762.html
Copyright © 2011-2022 走看看