80分wa最后一个点求助
查看原帖
80分wa最后一个点求助
133116
Xhesika_Frost楼主2020/11/21 19:33
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int m,v,n;
int a[101],b[101],c[101];
int f[301][301][3];
int Ai[201][201];
int use[201];
void find(int x,int y){
//	cout<<x<<" "<<y;
	if(f[x][y][0]==0)
	return ;
	find(f[x][y][1],f[x][y][2]);
	cout<<f[x][y][0] <<" ";
	return;
}
int main(){
	scanf("%d%d%d",&m,&v,&n);
	for(int i=1;i<=n;++i){
		scanf("%d%d%d",&a[i],&b[i],&c[i]); 
	}
	for(int i=1;i<=n;++i){
		for(int j=m;j>=a[i];--j){
			for(int z=v;z>=b[i];--z){
				if(Ai[j][z]<Ai[j-a[i]][z-b[i]]+c[i]){
					Ai[j][z]=Ai[j-a[i]][z-b[i]]+c[i];
					f[j][z][0]=i;
					f[j][z][1]=j-a[i];
					f[j][z][2]=z-b[i];
				}
			}
		}
	}
// 	cout<<f[m][v][0] <<" "<<f[m][v][1] <<" "<<f[m][v][2] <<" ";
	cout<<Ai[m][v]<<endl;
	find(m,v);
	return 0;
} 
2020/11/21 19:33
加载中...