码迷,mamicode.com
首页 > 其他好文 > 详细

1010bzoj

时间:2018-03-02 01:24:25      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:class   gpo   can   scan   AC   double   ons   print   div   

#include <bits/stdc++.h>
using namespace std;

const int maxn = 50000 + 20;
int q[maxn];
long long f[maxn], dp[maxn], S[maxn], sum[maxn], c[maxn];

double xielv(int k, int j){
    return (f[k] - f[j]) * 1.0 / (S[k] - S[j]);
}
bool dot(int j, int k, int i){
    return 2*S[i]*(S[k] - s[j]) >= f[k] - f[j];
}
int main(){
    int n;
    long long l;
    int h = 1, t = 1;
    scanf("%d%lld",&n,&l);
    l+=1;
    q[1] = 0;
    for(int i = 1; i <= n; i++){
        scanf("%lld", &c[i]);
        sum[i] = sum[i -1] + c[i];
        S[i] = sum[i] + i;        
        while(h < t && dot(h, h+1, i))h++;
            h++;
        int m = q[h];
        dp[i] = dp[m] + (S[i] - S[j] - l) * (S[i] - S[j] - l);
        
        while(h < t && dot(t-1, t, i))t--;        
        q[++t] = i;
    }
    printf("%lld\n",dp[n]);
    
}

 

1010bzoj

标签:class   gpo   can   scan   AC   double   ons   print   div   

原文地址:https://www.cnblogs.com/EdSheeran/p/8490804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!