90 MLE!!!
查看原帖
90 MLE!!!
768270
__why楼主2024/1/3 16:43
#include<bits/stdc++.h>
#define int long long 
using namespace std;
long long  N,V;
int v[100005],w[100005];
//定义状态:dp(i,j) 为在前i个物品里,用容量j的包能装的最大价值
//转移方程:dp(i,j) = max(dp(i-1,j)
//					  dp(i,j-vi)+wi,j>=vi)
int main(){
	cin>>V>>N;
	vector<vector<long long> >dp(N+1,vector<long long>(V+1,0));
	for(int i = 1;i<=N;i++)cin>>v[i]>>w[i];
	for(int i = 1;i<=N;i++){
		dp[i][0] = 0;	
		for(int j = 1;j<=V;j++){
			dp[i][j] = dp[i-1][j];
			if(j-v[i]>=0){
				dp[i][j] = max(dp[i][j],dp[i][j-v[i]]+w[i]);
			}
		}
	}
	cout<<dp[N][V];
} 
2024/1/3 16:43
加载中...