HELP!
查看原帖
HELP!
1281623
Problem1613end楼主2024/7/28 17:30

未过样例,暂未优化,求调。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll t,n,m,a[1010][1010],dp[110][110],maxn;
int main(){
	cin>>t>>n>>m;
	maxn=m;
	memset(dp,0,sizeof(dp));
	for(int i=1;i<=t;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=t-1;i++){
		cout<<maxn<<endl;
		m=maxn;
		for(int k=0;k<=m;k++){
		    dp[0][k]=maxn;
		}
		for(int j=1;j<=n;j++){
			for(int k=1;k<=m;k++){
				if(k>=a[i][j])  dp[j][k]=max(dp[j-1][k],dp[j][k-a[i][j]]+a[i+1][j]-a[i][j]);
				else  dp[j][k]=dp[j-1][k];
				cout<<dp[j][k]<<" ";
			}
			cout<<endl;
		}
		cout<<endl;
		for(int j=1;j<=n;j++){
			for(int k=0;k<=m;k++){
				maxn=max(maxn,dp[j][k]+m-k);
			}
		}
		//maxn=dp[n][m];
		//maxn=max(dp[i][n][m],maxn);
		//cout<<endl;
	}
	cout<<maxn;
	return 0;
}
2024/7/28 17:30
加载中...