以下代码理论上最坏时间复杂度是 O(TNM2),应该是过不了的,但过了,而且最慢的点也才81ms,求大佬证明其正确性/hack
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n,m,p[105][105];
cin>>t>>n>>m;
for (int i=1;i<=t;i++)
for (int j=1;j<=n;j++)
cin>>p[i][j];
for (int i=1;i<t;i++){
int dp[10005]={0};
for (int j=1;j<=n;j++){
if (p[i+1][j]>p[i][j]){
for (int k=0;k<=m;k++){
for (int x=0;x*p[i][j]<=k;x++){
dp[k]=max(dp[k],dp[k-x*p[i][j]]+x*p[i+1][j]-x*p[i][j]);
}
}
}
}
m+=dp[m];
}
cout<<m<<endl;
return 0;
}