10分求调
查看原帖
10分求调
577421
Irithyll楼主2024/7/22 14:06
#include<bits/stdc++.h>
using namespace std;
const int maxn=100+5;
const int maxm=2e4+10;
int n,m,s,a[maxn][maxn],dp[maxm][maxn],f[maxn][maxn],ans,b[maxn][maxn];
int main(){
//	freopen("battle.in","r",stdin);
//	freopen("battle.out","w",stdout);
	cin>>s>>n>>m;
	for(int i=1;i<=s;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=s;j++){
			int cnt=2*a[j][i]+1;
			if(cnt>m)continue;
			b[i][j]=cnt;
			for(int k=1;k<=s;k++){
				if(cnt>=2*a[k][i]+1){
					dp[cnt][i]+=i;
				}
			}
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=s;k++){
				int t=b[j][k];
				if(t>i)continue;
				f[i][j]=max(f[i][j],f[i-t][j-1]+dp[t][j]);
			}
		}
	}
//	for(int i=1;i<=m;i++){
//		for(int j=1;j<=n;j++){
//			cout<<f[i][j]<<" ";
//		}
//		cout<<endl;
//	}
	cout<<f[m][n];
	return 0;
}
2024/7/22 14:06
加载中...