zoukankan      html  css  js  c++  java
  • [USACO14MAR] Mooo Moo S

    (n) 座农场,每座里包含若干头牛,总共有 (b) 种牛,第 (i) 种每头的音量是 (v[i])。现在一阵大风将牛的叫声从左往右传递,如果某个农场的总音量是 (X),那么将传递 (X-1) 的音量到右边的下一个农场。一个农场的总音量等于该农场的牛产生的音量加上从上一个农场传递过来的音量。给定每个农场监测到的音量。求最少的牛的总数。

    Solution

    先跑完全背包预处理,然后从左到右扫一遍,模拟即可

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 100005;
    int n,b,v[N],f[N],a[N];
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>n>>b;
        for(int i=1;i<=b;i++) cin>>v[i];
        for(int i=1;i<=n;i++) cin>>a[i];
        memset(f,0x3f,sizeof f);
        f[0]=0;
        for(int i=1;i<=b;i++)
            for(int j=v[i];j<N;j++)
                f[j]=min(f[j],f[j-v[i]]+1);
        int now=0,ans=0;
        for(int i=1;i<=n;i++) {
            a[i]-=now;
            ans+=f[a[i]];
            now+=a[i];
            if(now) now--;
        }
        cout<<ans;
    }
    
    
  • 相关阅读:
    ionic框架
    第3课
    第7课
    第6课
    第5课
    第4课
    第3课
    第2课
    第2课
    第1课
  • 原文地址:https://www.cnblogs.com/mollnn/p/12501674.html
Copyright © 2011-2022 走看看