50pts求助
查看原帖
50pts求助
443675
紊莫turtle楼主2022/5/3 09:07
#include <bits/stdc++.h>
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if (x < 0) x = ~x + 1, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');}
signed main(){
	int s,n,m,a[110][110],h[110][110],dp[20020];
	s=read();n=read();m=read();
    for(int i=1;i<=s;i++)
        for(int j=1;j<=n;j++)
            a[j][i]=read();
    for(int i=1;i<=n;i++)
    {
    	sort(a[i]+1, a[i]+s+1);
    	for(int j=1;j<=s;j++) 
			h[i][j]=a[i][j]*2+1;
	}
    for(int i=1;i<=n;i++)
        for(int j=m;j;j--)
            for(int k=1;k<=s;k++)
                if(j>a[i][k]*2)
                    dp[j]=max(dp[j],dp[j-h[i][k]]+k*i);
    write(dp[m]);
    return 0;
}
2022/5/3 09:07
加载中...