20pts求助
查看原帖
20pts求助
259300
hy233楼主2022/3/2 11:50
#include<bits/stdc++.h>
using namespace std;
inline int rd()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9') 
    {
        if(ch=='-') f=0;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=x*10+ch-48;
        ch=getchar();
    }
    return f?x:-x;
}
int a[105][105];
int dp[105][20005];
int main()
{
    int s=rd(),n=rd(),m=rd();
    for(int i=1;i<=s;i++)
        for(int j=1;j<=n;j++)
            a[j][i]=rd();
    for(int i=1;i<=n;i++)
        sort(a[i]+1,a[i]+1+s);
    int mx=0;
    for(int i=1;i<=n;i++)
    {
        for(int k=m;k>=0;k--)
        {
            for(int j=1;j<=s;j++)
            {
                int ss=a[i][j]*2+1;
                if(k<ss) break;
                dp[i][k]=max(dp[i][k],dp[i-1][k-ss]+i*j);
                mx=max(mx,dp[i][k]);
            }
        }
    }
    cout<<mx;
    return 0;
}
2022/3/2 11:50
加载中...