洛谷 p2066 机器分配(资源型)
机器分配
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台
输入输出样例
3 3 30 40 50 20 30 50 20 25 30
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 机器分配(资源型)相关推荐
- Luogu P2066 机器分配(dp)
P2066 机器分配 题面 题目背景 无 题目描述 总公司拥有高效设备 \(M\) 台,准备分给下属的 \(N\) 个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这 \(M\ ...
- 洛谷 P1843 奶牛晒衣服
题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...
- 洛谷 P4012 深海机器人问题【费用流】
题目链接:https://www.luogu.org/problemnew/show/P4012 洛谷 P4012 深海机器人问题 输入输出样例 输入样例#1: 1 1 2 2 1 2 3 4 5 6 ...
- 洛谷1345 [Usaco5.4]奶牛的电信
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
- 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...
- 信息学奥赛一本通 1956:【11NOIP普及组】表达式的值 | 洛谷 P1310 [NOIP2011 普及组] 表达式的值
[题目链接] ybt 1956:[11NOIP普及组]表达式的值 洛谷 P1310 [NOIP2011 普及组] 表达式的值 [题目考点] 表达式树 由带括号的中缀表达式构建表达式树 [解题思路] 思 ...
- 信息学奥赛一本通 1985:【19CSPJ普及组】加工零件 | 洛谷 P5663 [CSP-J2019] 加工零件
[题目链接] ybt 1985:[19CSPJ普及组]加工零件 洛谷 P5663 [CSP-J2019] 加工零件 [题目考点] 图论 SPFA算法 [解题思路] 1. 问题分析 每个工人是一个顶点, ...
- 并查集——关押罪犯(洛谷 P1525)
题目选自洛谷P1525 此题是一道很经典,而且很好的题目.思路也十分的新颖,比较的难以捉摸. 题面大意:(人性翻译) 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两 ...
- vector数组的使用——机器翻译(洛谷 P1540)
题目选自洛谷P1540 主要思路是: 使用一个 vector 来表示内存. 依次读如数据,判断是否在内存中(find).如果不在,就需要查词典,然后加入内存.将答案 + 1. 如果内存满了,就把最先进 ...
最新文章
- Java程序中的死锁
- SharePoint 2003, 2007对上传文件的URL的长度限制
- 关于编译原理的一点看法
- HTML中的列表和表格
- 电脑关机慢是什么原因_为什么电脑无法关机?电脑无法正常关机的解决方案
- html webservice数据交互_一种基于WebService的数据交换方法
- springboot @RequestBody 接收字符串
- java日期处理总结
- Win10下OpenCV3.2.0+VS2015配置
- 文件处理命令,目录处理命令,链接命令
- 安卓UI相关开源项目库汇总
- SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
- 创建mysql视图索引_mysql 创建索引和视图
- pycharm 运行celery_调试celery遇到的坑
- 用keil编写C语言流水灯程序,简述关于Keil、STM32 用C++编写流水灯程序
- 170713 逆向-填数游戏
- word禁止编辑,禁止复制
- Mysql索引原理整理
- OCAD应用:单透镜与双胶合透镜结构组合设计
- Idea2023安装教程