公司:美团
类型:01背包
题目
题意:01背包模板题
#include <bits/stdc++.h>
using namespace std;
const int N = 123;
int p[N], a[N], q[N], b[N];
int dp[N];
int main(){
//01背包问题
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d%d%d%d", &p[i], &a[i], &q[i], &b[i]);
}
memset(dp, 0, sizeof dp);
for(int i = 0; i < n; i++){
for(int j = 120; j >= 0; j--){
if(j >= p[i]) dp[j] = max(dp[j], dp[j-p[i]] + a[i]); //做一半
if(j >= q[i]) dp[j] = max(dp[j], dp[j-q[i]] + b[i]); //做完
}
}
// for(int i = 0; i < 5; i ++) printf("%d ", dp[i]);
printf("%d", dp[120]);
return 0;
}