悬关求调
查看原帖
悬关求调
1180231
H_dream楼主2024/10/19 20:11
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=110,M=1e4+10;
int T,n,m,a[N][N],dp[M];
int main(){
	cin>>T>>n>>m;
	for(int i=1;i<=T;++i)
		for(int j=1;j<=n;++j)
			scanf("%d",&a[i][j]);
	for(int i=1;i<T;++i){
		memset(dp,0,sizeof dp); //清空
		//完全背包 DP 
		for(int j=1;j<=n;++j){
			for(int k=1;k<=m;++k){
				if(a[i][j]<=k)
					dp[k]=max(dp[k],dp[k-a[i][j]]+a[i+1][j]);
			}
		}
		//更新答案 
		m=max(m,dp[m]);
	}
	cout<<m;
	return 0;
}

测评记录 (样例没过)

2024/10/19 20:11
加载中...