1 solutions

  • 2
    @ 2024-3-23 16:36:36
    #include<bits/stdc++.h>
    using namespace std;
    int C,H;
    int v[5005];
    int dp[50005]={};
    int main(){
    	cin>>C>>H;
    	for(int i=1;i<=H;i++) cin>>v[i];
    	for(int i=1;i<=H;i++){
    		for(int m=C;m>=0;m--){
    			if(v[i]>m) dp[m]=dp[m];
    			else dp[m]=max(dp[m],dp[m-v[i]]+v[i]);
    		}
    	}
    	cout<<dp[C]<<"\n";
    	return 0;
    }
    

    特殊一点的01背包,价值和重量是同一个

    • 1

    Information

    ID
    1030
    Time
    1500ms
    Memory
    125MiB
    Difficulty
    6
    Tags
    # Submissions
    20
    Accepted
    12
    Uploaded By