zoukankan      html  css  js  c++  java
  • BZOJ 1010: [HNOI2008]玩具装箱toy

     二次联通门 : BZOJ 1010: [HNOI2008]玩具装箱toy

    /*
        BZOJ 1010: [HNOI2008]玩具装箱toy
    
        斜率优化dp
        SB的我看了一下午才看明白。。
    
    */
    #include <cstdio>
    #include <iostream>
    #define rg register
    void read (int &n)
    {
        rg char c = getchar ();
        for (n = 0; !isdigit (c); c = getchar ());
        for (; isdigit (c); n = n * 10 + c - '0', c = getchar ());
    }
    #define Max 300009
    typedef double flo; typedef long long LL;
    LL f[Max], s[Max]; int q[Max], N, L;
    LL P (LL a) { return a * a; }
    flo C (int j, int k)
    {
        return (flo) (f[k] - f[j] + P (s[k] + L + 1) - P (s[j] + L + 1)) / (2.0 * (s[k] - s[j]));
    }
    int main (int argc, char *argv[])
    {
        int l = 0, r = 0, x; read (N), read (L); rg int i, j;
        for (i = 1; i <= N; ++ i) read (x), s[i] = s[i - 1] + x;
        for (i = 1; i <= N; ++ i) s[i] += i;
        for (i = 1; i <= N; ++ i)
        {
            for (; l < r && C (q[l], q[l + 1]) <= s[i]; ++ l);
            int t = q[l]; f[i] = f[t] + P (s[i] - s[t] - L - 1);
            for (; l < r && C (q[r], i) < C (q[r - 1], q[r]); -- r);
            q[++ r] = i;
        }
        printf ("%lld", f[N]); return 0;
    }

     

  • 相关阅读:
    xp 安装 win7 64
    局域网内传输文件速度慢
    安全和共享设置
    vs2005无法启动
    dos快速通道
    xp 共享 guest
    Java菜题
    Java序列化总结(最全)
    Bitset改进你的程序质量
    Java反射方法总结
  • 原文地址:https://www.cnblogs.com/ZlycerQan/p/7553224.html
Copyright © 2011-2022 走看看