zoukankan      html  css  js  c++  java
  • P5017 摆渡车

    ——————————————————————————————————————————————————-

    想不到普及组的题都会这么有意思

    数轴上转移,借鉴了@Sooke的剪枝思想,虽然就剪一个就A了

    斜率优化在考虑中

    ——————————————————————————————————————

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,tt,a;
    int cnt[4000100],sum[4000100],f[4000100];
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++){cin>>a;tt=max(tt,a);cnt[a]++;sum[a]+=a;}
        for(int i=1;i<=tt+m;i++)cnt[i]+=cnt[i-1],sum[i]+=sum[i-1];
        for(int i=0;i<=tt+m;i++)
        {
            f[i]=cnt[i]*i-sum[i];
            for(int j=max(0,i-2*m+1);j<=i-m;j++)
            f[i]=min(f[i],f[j]+(cnt[i]-cnt[j])*i-sum[i]+sum[j]);    
        }
        int ans=0x3f3f3f3f;
        for(int i=tt;i<=tt+m;i++)ans=min(f[i],ans);
        cout<<ans;
    }
  • 相关阅读:
    lightoj-1050
    lightoj-1305
    lightoj-1354
    lightoj-1433
    lightoj-1227
    lightoj-1189
    lightoj-1182
    lightoj-1011
    lightoj-1009
    lightoj-1023
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11415151.html
Copyright © 2011-2022 走看看