题解【洛谷】P2925 【[USACO08DEC]干草出售Hay For Sale 】

版权声明:反正都没人抄我博客的 https://blog.csdn.net/qq_42372343/article/details/81913587

直接cout m就行了,信不信,给代码:

#include<iostream>
using namespace std;
int n,m,a[5001];
int main(void){
    cin>>m>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    cout<<m;
}

哈哈,说笑说笑,虽然上面的代码可以过,但这只是一个小bug,这道题就是一个很水的01背包,状态转移方程是f[j]=max(f[j],f[j-a[i]]+a[i]),不多说,上代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,f[100001],a[5001];
int main(void){
    cin>>m>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]=max(f[j],f[j-a[i]]+a[i]);
    cout<<f[m];
}

猜你喜欢

转载自blog.csdn.net/qq_42372343/article/details/81913587
今日推荐