zoukankan      html  css  js  c++  java
  • HDU 5191

    好端端的被HACK掉了。。。应该是在两端都要补W个0才对,之前只想到要在后面补足0,没想到前面也应该补足,因为前面即便存在0也可能使得移动的积木数最少。。

    T_T

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define LL __int64
    using namespace std;
    
    LL height[150005];
    LL in[150005];
    LL out[150005];
    
    LL mint(LL a,LL b){
        if(a<b) return a;
        return b;
    }
    LL maxt(LL a,LL b){
        if(a>b) return a;
        return b;
    }
    
    int main(){
        LL n,w,h;
        while(scanf("%I64d%I64d%I64d",&n,&w,&h)!=EOF){
            LL sum=0;
            memset(height,0,sizeof(height));
            for(LL i=w+1;i<=n+w;i++){
                scanf("%I64d",&height[i]);
                sum+=height[i];
            }
            if(sum<w*h) puts("-1");
            else{
                n=n+w+w;
                in[0]=out[0]=0;
                LL ans=(1ll<<62);
                for(LL i=1;i<=n;i++){
                    if(height[i]>=h){
                            out[i]=out[i-1]+height[i]-h;
                            in[i]=in[i-1];
                    }
                    if(height[i]<=h){
                    in[i]=in[i-1]+h-height[i];
                    out[i]=out[i-1];
                    }
                    if(i-w>=0){
                        ans=mint(ans,maxt(in[i]-in[i-w],out[i]-out[i-w]));
                    }
                }
                printf("%I64d
    ",ans);
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    053364
    053363
    oracle导出批量表N行记录
    053362
    053361
    053360
    053359
    053358
    053357
    053356
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4356377.html
Copyright © 2011-2022 走看看