20pts 求助
查看原帖
20pts 求助
307940
aaaaaaaawsl楼主2022/9/24 12:18
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

const int N = 510;

int n, q;
int cst, be, fr; 
int dp[N][N];

int main(){
	scanf("%d%d", &n, &q);
	for(int i = 1; i <= n; ++ i){
		scanf("%d%d%d", &cst, &fr, &be);
		for(int j = 500; j >= 0; -- j){
			for(int k = 500; k >= 0; -- k){
				if(j - cst >= 0 && k - fr > 0) dp[j][k] = max(dp[j][k], dp[j - cst][k - fr] + be);
				else if(j - cst >= 0 && k - fr <= 0) dp[j][k] = max(dp[j][k], dp[j - cst][0] + be);
			}
		}
	}
//	for(int j = 0; j <= 500; ++ j){
//		for(int k = 500; k >= 0; -- k){
//			dp[j][k] = max(dp[j][k], dp[j][k + 1]);
//		}
//	}
	
	for(int i = 1; i <= q; ++ i){
		int a, b;
		scanf("%d%d", &a, &b);
		printf("%d\n", dp[a][b]);
	}
}
2022/9/24 12:18
加载中...