机器分配

Problem Description
某总公司拥有设备M台,准备分给下属的N个子公司。各子公司若获得这些设备,可以为总公司赚取一定的盈利。

如何分配这M台设备才能使总公司得到的盈利最大?
请输出最大盈利值。
Input
Output
请计算总公司合理分配这M台设备所获得的最大盈利。
每组数据输出一行。
Sample Input
2 3
1 2 3
2 3 4
Sample Output
4
题意:我刚开始以为这个题目的意思是第一台机器可以给第一公司带来收益是1,
给第二个公司带来的收益是2;后来发现意思理解错了;
是当公司分配到一台机器时收益是1,分配到两台机器时收益是2,;

#include<bits/stdc++.h>
using namespace std;
int s[1000][1000];
int dp[1000][1000];
int main(){
	int n,m;
	while(cin>>n>>m){
		for(int i=1;i<=n;i++){
        	for(int j=1;j<=m;j++){
        		cin>>s[i][j];
			}
		}	
		int max1=1;
		memset(dp,0,sizeof(dp));
		//dp[q][w]:q个公司分配w个机器最大的收益;
		for(int q=1;q<=n;q++){
			for(int w=1;w<=m;w++){
				for(int e=0;e<=w;e++){
					if(dp[q][w]<=(dp[q-1][w-e]+s[q][e])){
					//我们之前已经计算出dp[q-1][0]到q[q-1][w],e+w-e=w;
					可以理解q个公司的最大收益;
						dp[q][w]=dp[q-1][w-e]+s[q][e];
					}
				}
			}
		}
		cout<<dp[n][m]<<endl;
	}
	return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值