zoukankan      html  css  js  c++  java
  • BZOJ 1010: [HNOI2008]玩具装箱toy(dp+斜率优化)

     要写题解好像很长...不想写(不会写..) BZOJ discuss里讲得挺好的...

    ------------------------------------------------------------------------------

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
     
    #define Rep(i,l,r) for(int i=l;i<=r;++i)
     
    using namespace std;
     
    typedef long long ll;
    const int maxn=50000+5;
     
    ll sum[maxn];
    ll d[maxn];
    int q[maxn];
     
    #define A(i) (sum[i]+i)
    #define B(i) (A(i)+1+l)
    #define X(k,j) (d[k]+B(k)*B(k)-d[j]-B(j)*B(j))
    #define Y(k,j) (B(k)-B(j))
     
    int main()
    {
    // freopen("test.in","r",stdin);
    // freopen("test.out","w",stdout);
    int n,l;
    scanf("%d%d",&n,&l);
    sum[0]=0;
    Rep(i,1,n) {
    int t; scanf("%d",&t);
    sum[i]=sum[i-1]+t;
    }
    int front=0,rear=0; q[0]=d[0]=0;
    Rep(i,1,n) {
    while(rear>front && X(q[front+1],q[front])<=Y(q[front+1],q[front])*2*A(i)) ++front;
    d[i]=d[q[front]]+(A(i)-B(q[front]))*(A(i)-B(q[front]));
    while(rear>front && X(i,q[rear])*Y(q[rear],q[rear-1])*2<=X(q[rear],q[rear-1])*Y(i,q[rear])*2) --rear;
    q[++rear]=i;
    }
    printf("%lld ",d[n]);
    return 0;
    }

      

    ------------------------------------------------------------------------------ 

  • 相关阅读:
    清除富文本样式
    jquery--cookie应用
    Log4j 配置详解
    判断请求是否为ajax
    日期工具类
    Windows Server2012 KB2919355 补丁无法安装
    安装系统步骤:
    大白菜u盘启动盘制作工具取消赞助商方法详解
    视频使用教程
    检查网络是否正常的几种命令
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4395038.html
Copyright © 2011-2022 走看看