karen111 @ 2023-08-08 18:21:54
#include<iostream>
#include<cmath>
using namespace std;
int n,m,v1,p1,q1,a;
int main_v[70],main_p[70],vf[70][3],pf[70][3];
int dp[70][32010];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>v1>>p1>>q1;
if (q1==0){
main_v[i]=v1;
main_p[i]=p1*v1;
}
if (q1>0){
vf[q1][0]++;
vf[q1][vf[q1][0]]=v1;
pf[q1][vf[q1][0]]=p1*v1;
}
}
for(int i=1;i<=m;i++){
for(int j=n;main_v[i]!=0 && j>=main_v[i];j--){
a=dp[i-1][j-main_v[i]]+main_p[i];
dp[i][j]=max(dp[i-1][j],a);
if (j>=main_v[i]+vf[i][1]) {
a=dp[i-1][j-main_v[i]-vf[i][1]]+main_p[i]+pf[i][1];
dp[i][j]=max(dp[i-1][j],a);
}
if (j>=main_v[i]+vf[i][2]){
a=dp[i-1][j-main_v[i]-vf[i][2]]+main_p[i]+pf[i][2];
dp[i][j]=max(dp[i-1][j],a);
}
if (j>=main_v[i]+vf[i][1]+vf[i][2]){
a=dp[i-1][j-main_v[i]-vf[i][1]-vf[i][2]]+main_p[i]+pf[i][1]+pf[i][2];
dp[i][j]=max(dp[i-1][j],a);
}
}
}
cout<<dp[m][n]<<endl;
return 0;
}
by yee__ @ 2023-08-08 18:44:40
帮你试了,没有语法,数据库之类的问题, 问题应该在循环判断里 建议看看题解