1 条题解

  • 1

    思路

    完全背包模版题。 我们设 dpidp_i 表示前 ii 分钟可以采取的最大值,不难推出方程为

    dpi=max(dpi,dpiv+w)dp_i=\max(dp_i,dp_{i-v}+w)

    前者表示不选,后者表示选。

    code

    #include<bits/stdc++.h>
    using namespace std;
    const int N =1e7+5;
    long long f[N];
    int v[N],w[N];
    int main(){
        int n,m;
        cin>>m>>n;
        for(int i=1;i<=n;i++) cin>>w[i]>>v[i];
        for(int i=1;i<=n;i++)
             for(int j=v[i];j<=m;j++)
                f[j]=max(f[j],f[j-v[i]]+w[i]);
        cout<<f[m];
    }
    
    • 1

    信息

    ID
    732
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    3
    已通过
    2
    上传者