1 条题解

  • 0
    @ 2026-8-9 21:44:52
    #include <bits/stdc++.h>
    #define int long long
    #define mk make_pair
    #define PII pair<int,int>
    #define FOR(i,j,k) for(int i=(j);i<=(k);++i)
    #define ROF(i,j,k) for(int i=(j);i>=(k);--i)
    #define FOI(a,b) for(auto a : b)
    #define wh while
    #define inf 0x3f3f3f3f3f3f3f3f
    #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    #define snd second
    #define fst first
    #define pb push_back
    #define CI const int
    #define NP namespace
    using NP std;
    int quickpow(int a,int b)
    {
    	int ans=1;
    	wh(b)
    	{
    		if(b&1)ans=ans*a;
            a=a*a;
    		b>>=1;
    	}
    	return ans;
    }
    CI MAXN=1e5+5;
    int n,m,k,a[11][MAXN],s[MAXN][11],dp[2][11];
    signed main(void)
    {
    
        freopen("toy.in","r",stdin);
        freopen("toy.out","w",stdout);
    	IOS
    	cin>>n>>m>>k;
    	FOR(i,1,n)
    	{
    		FOR(j,1,m)
    		{
    			cin>>a[i][j];
    		}
    	}
    	FOR(i,1,m)
    	{
    		vector<int> v;
    		FOR(j,1,n)
    		{
    			v.pb(a[j][i]);
    		}
    		sort(v.begin(),v.end());
    		reverse(v.begin(),v.end());
    		FOR(j,1,n)
    		{
    			s[i][j]=s[i][j-1]+v[j-1];
    		}
    	}
    	memset(dp,-inf,sizeof dp);
    	dp[0][0]=0;
    	FOR(i,1,m)
    	{
    		FOR(c,0,k-1)
    		{
    			FOR(kk,0,n)
    			{
    				if(c+1-kk>=0)dp[i%2][c+1-kk]=max(dp[i%2][c+1-kk],dp[(i%2)^1][c]+s[i][kk]);
    			}
    		}
    	}
    	cout<<dp[m%2][k-1];
        return false;
    }
    
    
    
    
    
    
    
    
    

    信息

    ID
    7224
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    (无)
    递交数
    11
    已通过
    2
    上传者