样例过不了
查看原帖
样例过不了
124564
Austra楼主2020/10/17 10:30

思路参考第一篇题解,代码原创,

我的理解是,一共有t-1次完全背包,

每次完全背包的价值是明天的价格减去今天的价格,体积是价钱,容量是手上有的钱

所以,直接套完全背包的模板,外面再加一层t-1的循环

——然而样例没过,求查错

#include<iostream>
#include<cstring>
using namespace std;
int f[10001],p[101][1001],t,m,n,v[10001];
int main(){
	cin>>t>>n>>m;
	for(int i=1;i<=t;i++)
		for(int j=1;j<=n;j++)cin>>p[i][j];
	f[1]=m;
	for(int i=1;i<t;i++){
		memset(v,0,sizeof(v));
		for(int j=1;j<=n;j++)
			for(int k=p[i][j];k<=f[i];k++)
				v[k]=max(v[k],v[k-p[i][j]]+p[i+1][j]-p[i][j]);
		f[i+1]=v[f[i]];
	}
	cout<<f[t];
	return 0;
}
2020/10/17 10:30
加载中...