两组样例都能过,代码:
#include<iostream>
#include<cmath>
#include<string.h>
#include<algorithm>
#include<queue>
#define int long long
#define re register
#define zhuang_bi ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define INF 0x7fffffff
using namespace std;
const int N = 505;
int s,n,m,ans = 0;
int a[N][N];
int dp[N];
//bool cmp(int a,int b){
// return a > b;
//}
signed main(){
zhuang_bi
cin>>s>>n>>m;
for(re int i = 1;i <= s;i ++){
for(re int j = 1;j <= n;j ++){
cin>>a[j][i];
}
}
for(re int i = 1;i <= n;i ++){
sort(a[i] + 1,a[i] + s + 1/*,cmp*/);
}
for(re int i = 1;i <= n;i ++){
for(re int j = m;j >= 0;j --){
for(re int k = 1;k <= s;k ++){
if(a[i][k] * 2 < j){
dp[j] = max(dp[j],dp[j - a[i][k] * 2 - 1] + k * i);
}
}
}
}
for(re int i = 1;i <= m;i ++){
ans = max(ans,dp[i]);
}
cout<<ans<<"\n";
return 0;
}
卡了半天看了一下tj,发现思路一致,但就是研究不明白怎么就错了