1 条题解

  • 0
    @ 2021-12-6 17:22:35

    这其实就是一道普通的01背包问题。

    但是会有一个问题:

    干草没有自己的价值。

    那么怎么办呢?

    以体积作为每一捆干草的价值。

    好了,那么问题迎刃而解。

    下面是完整代码。

    #include<bits/stdc++.h>

    using namespace std;

    int h,n;

    int s[100001],dp[100001];

    int main(){

    cin>>h>>n;
    
    for(int i=1;i<=n;i++){
    
    	cin>>s[i];
    
    }
    for(int i=1;i<=n;i++){
    
    	for(int j=h;j>=1;j--){
    
    		if(j>=s[i]){
    
    			dp[j]=max(dp[j],dp[j-s[i]]+s[i]);
    
    		}
    
    	} 
    
    }
    
    cout<<dp[h];
    
    return 0;
    

    }

    • 1

    信息

    ID
    1586
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    4
    已通过
    3
    上传者