机器分配

https://www.luogu.org/problem/show?pid=2066

题目描述

总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。

输入输出格式

输入格式:

第一行有两个数,第一个数是分公司数N,第二个数是设备台数M。

接下来是一个N*M的矩阵,表明了第 I个公司分配 J台机器的盈利。

输出格式:

第1行为最大盈利值

第2到第n为第i分公司分x台

输入输出样例

输入样例#1:

3 3
30 40 50
20 30 50
20 25 30

输出样例#1:

70
1 1
2 1
3 1令f[i][j]表示前i个公司分配j台机器的最大盈利枚举前i-1个公司分配k台机器转移方程:f[i][j]=max(f[i-1][j-k]+w[i][k])初始化:f[1][i]=w[1][i]方案的输出用递归,用类似于转移方程的形式查找。注意可能有多组解的情况,不注意第二个点过不去,多组解按字典序大的公司多分配输出可AC
#include<cstdio>
using namespace std;
int w[11][16],f[11][16],n,m,d;
void solution(int i,int j)
{if(!i) return;for(int k=j;k>=0;k--)if(f[i-1][j-k]+w[i][k]==d){d=f[i-1][j-k];solution(i-1,j-k);printf("%d %d\n",i,k);break;}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&w[i][j]);for(int i=1;i<=m;i++) f[1][i]=w[1][i];for(int i=2;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<=j;k++)if(f[i-1][j-k]+w[i][k]>f[i][j])     f[i][j]=f[i-1][j-k]+w[i][k];printf("%d\n",f[n][m]);d=f[n][m];solution(n,m);
}

错因:g[i]=记录的是前i个公司可得到的最大盈利,前i个最大不代表i+1最大
#include<cstdio>
#include<algorithm>
using namespace std;
int w[11][16],f[11][16],n,m,g[11];
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&w[i][j]);for(int i=1;i<=m;i++) f[1][i]=w[1][i];for(int i=2;i<=n;i++)for(int j=1;j<=m;j++)for(int k=1;k<=j;k++)if(f[i-1][j-k]+w[i][k]>f[i][j])     {f[i][j]=f[i-1][j-k]+w[i][k];g[i]=k;}printf("%d\n",f[n][m]);for(int i=2;i<=n;i++) m-=g[i];printf("1 %d\n",m);for(int i=2;i<=n;i++) printf("%d %d\n",i,g[i]);
}

错误代码

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6358815.html

洛谷 p2066 机器分配(资源型)相关推荐

  1. Luogu P2066 机器分配(dp)

    P2066 机器分配 题面 题目背景 无 题目描述 总公司拥有高效设备 \(M\) 台,准备分给下属的 \(N\) 个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这 \(M\ ...

  2. 洛谷 P1843 奶牛晒衣服

    题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...

  3. 洛谷 P4012 深海机器人问题【费用流】

    题目链接:https://www.luogu.org/problemnew/show/P4012 洛谷 P4012 深海机器人问题 输入输出样例 输入样例#1: 1 1 2 2 1 2 3 4 5 6 ...

  4. 洛谷1345 [Usaco5.4]奶牛的电信

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  5. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)

    CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...

  6. 信息学奥赛一本通 1956:【11NOIP普及组】表达式的值 | 洛谷 P1310 [NOIP2011 普及组] 表达式的值

    [题目链接] ybt 1956:[11NOIP普及组]表达式的值 洛谷 P1310 [NOIP2011 普及组] 表达式的值 [题目考点] 表达式树 由带括号的中缀表达式构建表达式树 [解题思路] 思 ...

  7. 信息学奥赛一本通 1985:【19CSPJ普及组】加工零件 | 洛谷 P5663 [CSP-J2019] 加工零件

    [题目链接] ybt 1985:[19CSPJ普及组]加工零件 洛谷 P5663 [CSP-J2019] 加工零件 [题目考点] 图论 SPFA算法 [解题思路] 1. 问题分析 每个工人是一个顶点, ...

  8. 并查集——关押罪犯(洛谷 P1525)

    题目选自洛谷P1525 此题是一道很经典,而且很好的题目.思路也十分的新颖,比较的难以捉摸. 题面大意:(人性翻译) 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两 ...

  9. vector数组的使用——机器翻译(洛谷 P1540)

    题目选自洛谷P1540 主要思路是: 使用一个 vector 来表示内存. 依次读如数据,判断是否在内存中(find).如果不在,就需要查词典,然后加入内存.将答案 + 1. 如果内存满了,就把最先进 ...

最新文章

  1. Java程序中的死锁
  2. SharePoint 2003, 2007对上传文件的URL的长度限制
  3. 关于编译原理的一点看法
  4. HTML中的列表和表格
  5. 电脑关机慢是什么原因_为什么电脑无法关机?电脑无法正常关机的解决方案
  6. html webservice数据交互_一种基于WebService的数据交换方法
  7. springboot @RequestBody 接收字符串
  8. java日期处理总结
  9. Win10下OpenCV3.2.0+VS2015配置
  10. 文件处理命令,目录处理命令,链接命令
  11. 安卓UI相关开源项目库汇总
  12. SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
  13. 创建mysql视图索引_mysql 创建索引和视图
  14. pycharm 运行celery_调试celery遇到的坑
  15. 用keil编写C语言流水灯程序,简述关于Keil、STM32 用C++编写流水灯程序
  16. 170713 逆向-填数游戏
  17. word禁止编辑,禁止复制
  18. Mysql索引原理整理
  19. OCAD应用:单透镜与双胶合透镜结构组合设计
  20. Idea2023安装教程

热门文章

  1. java_有返回值线程_提前加载例子
  2. hdu 1544(求回文子串的个数)
  3. 【长篇连载】桌面管理演义 第八回 电脑中毒很危险 告警隔离防传染
  4. 【翻译】Oracle不同版本之间Export Import的兼容性矩阵
  5. 基于MATLAB FDATOOL的CIC滤波器设计
  6. Excel问题汇总!
  7. setup.py安装
  8. pyqt5实战之简陋的计算器
  9. 使用pytorch创建神经网络并解决线性拟合和分类问题
  10. vue 加载体验优化