@zhang

天生我材必有难,千金散尽还债来  •  1个月前


#include<bits/stdc++.h>
using namespace std;
int dp[2][501][1002];//前i个菜,花了v元,小明心情为k时小红心情的最大值
int main() {
	int n,v;
	cin>>n>>v;
	memset(dp,0Xf0,sizeof dp);
	dp[0][0][500]=0;
	for(int i=1; i<=n; i++) {
		int c,x,y;
		cin>>c>>x>>y;
		for(int j=0; j<=v; j++) {
			for(int k=0; k<=1000; k++) {
				if(k-x>=0&&k-x<=1000&&j-c>=0) {
					dp[i%2][j][k]=max(dp[(i-1)%2][j][k],dp[(i-1)%2][j-c][k-x]+y);
				} else {
					dp[i%2][j][k]=dp[(i-1)%2][j][k];
				}

			}
		}
	}
	int ans=0;
	for(int j=1; j<=v; j++) {
		for(int i=500; i<=1000; i++) {
			ans=max(ans,dp[n%2][j][i]);
		}
	}
	cout<<ans;
}

评论:

请先登录,才能进行评论