完全背包(模板)

题目: 传送门

Code:

#include<queue>
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>

using namespace std;
typedef long long ll;
const int maxn = 1007;

int c[maxn], w[maxn];
int dp[maxn][maxn];
int main() {
    
    
    ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	//freopen("out.txt", "w", stdout);

	int n, v;
	cin>>n>>v;
	for (int i=1;i<=n;i++) {
    
    
		cin>>c[i]>>w[i];
	}
	for (int i=1;i<=maxn;i++) {
    
    
		dp[0][i] = 0;
		dp[i][0] = 0;
	}
	for (int i=1;i<=n;i++) {
    
    
		for (int j=v;j>0;j--) {
    
    
			for (int k=0;k*c[i]<=j;k++) {
    
    
				dp[i][j] = max(dp[i-1][j-k*c[i]] + k*w[i], dp[i][j]);
			}
			
		}
	}

	cout<<dp[n][v]<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/u010017231/article/details/105741492
今日推荐