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.

  • 相关阅读:
    day04
    day02
    day01
    ORM + 单例
    ORM框架SQLAlchemy
    存储引擎 , 索引 ,慢日志查询 , explain查询优化, 权限管理
    事务,视图 ,函数,存储过程,触发器
    pymysql 操作 , sql注入
    外键,高级操作
    mysql 基本操作
  • 原文地址:https://www.cnblogs.com/NanoApe/p/4396762.html
Copyright © 2011-2022 走看看