机器分配
2016-06-24 15:28
204 查看
机器分配
Description
某总公司拥有高效生产设备 M 台,准备分给下属的 N 个分公司。各分公司若获得这些设备,可以为总公司提供一定的盈利。
问:如何分配这 M 台设备才能使国家得到的盈利最大?求出最大盈利值。
分配原则:每个公司有权获得任意数目的设备,但总台数不得超过总设备数 M。
其中 M<=100,N<=100。
Input
第一行为两个整数 M,N。接下来是一个 N×M 的矩阵,其中矩阵的第 i 行的第 j 列的数 Aij 表明第 i 个公司分配 j 台机器的盈利。
所有数据之间用一个空格分隔。
Output
只有一个数据,为总公司分配这 M 台设备所获得的最大盈利。Sample Input
3 21 2 3
2 3 4
Sample Output
4Solution
设 fi,j 表示前 i 个公司分配 j 台机器的最大盈利值,则fi,j=fi−1,k+Ci,j−k
Code
#include <iostream> #include <cstdio> #define Max(x,y) ((x)>(y)?(x):(y)) using namespace std; int m,n; int c[110][110]; int f[110][110]; int main(){ freopen("machine.in","r",stdin); freopen("machine.out","w",stdout); scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&c[i][j]); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int k=0;k<=j;k++) f[i][j]=Max(f[i][j],f[i-1][k]+c[i][j-k]); printf("%d\n",f [m]); return 0; }
相关文章推荐
- DC/OS 安装部署
- C# Handler 不能访问Session
- [leetcode] 365. Water and Jug Problem 解题报告
- Mybatis中如何获取SqlSession
- javaweb学习总结 ——Filter(过滤器)学习
- ios初学SQLite3(创建、插入、查询、更新数据库和表)
- 自适应不同屏幕的资源
- collections.sort(list, comparator) 详解
- SQL学习笔记9——分页查询
- 创建项目错误:error: Error: No resource found that matches the given name: attr 'android:windowElevation'.
- Laravel 手动分页实现
- 操作系统面试—死锁(三)——死锁检测和死锁恢复
- pull解析和生成xml
- platform_device与platform_driver
- Java之关于This的用法
- easyui-datagrid 实用方法
- Leetcode no. 168
- 百度推送
- 期末考试-献给阿尔吉侬的花束(算法基础 第10周)
- 2016.6.24——vector<vector<int>>【Binary Tree Level Order Traversal】