贪心+dp
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
//贪心+dp
const int maxs = 110;
const int maxn = 110;
const int maxm = 20010;
int S, n, m, ans;
int a[maxs][maxn], f[maxm];
int main(){
cin>>S>>n>>m;
for(int i =1;i<=S;i++){
for(int j = 1;j<=n;j++){
cin>>a[j][i];
}
}
for(int i = 1;i<=n;i++) sort(a[i]+1,a[i]+S+1);
for(int i =1;i<=n;i++){
for(int j =m;j>=0;j--){
for(int k=1;k<=S;k++){
if(j>=2*a[i][k]+1) f[j] = max(f[j],f[j-(2*a[i][k]+1)]+i*k);
}
}
}
cout<<f[m]<<endl;
return 0;
}
京公网安备 11010502036488号