当前位置: 首页 > news >正文

P2066 机器分配

P2066 机器分配 - 洛谷

题目描述

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

输入格式

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

接下来是一个N×M的矩阵,表明了第i个公司分配j台设备的盈利。

最大盈利值相同时,要求编号小的公司分得设备尽可能少。

输出格式

第一行为最大盈利值。

接下来N行为第i分公司分x台。

输入输出样例

输入 #1输出 #1
3 3
30 40 50
20 30 50
20 25 30
70
1 1
2 1
3 1

思路:
代码:

#include<bits/stdc++.h>
using namespace std;
int n, m;
int val[20][20];  // 存储每个公司分配不同设备的盈利
int best[20];     // 最优分配方案
int current[20];  // 当前分配方案
int max_profit = 0;  // 最大盈利// DFS函数:x=当前公司编号,Nprofit=当前盈利,Nremain=剩余设备
void dfs(int x, int Nprofit, int Nremain) 
{if (Nremain < 0) return;  // 设备不足,剪枝if (x > n) {  // 所有公司处理完毕if (Nprofit > max_profit) {max_profit = Nprofit;for (int i = 1; i <= n; i++) {best[i] = current[i];}}return;}// 枚举当前公司分配的设备数for (int k = 0; k <= Nremain; k++) {current[x] = k;  // 记录当前分配dfs(x + 1, Nprofit + val[x][k], Nremain - k);  // 递归处理下一个公司}
}int main() 
{cin >> n >> m;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> val[i][j];}}dfs(1, 0, m);  // 从第1个公司开始DFScout << max_profit << endl;  // 输出最大盈利for (int i = 1; i <= n; i++) {cout << i << " " << best[i] << endl;  // 输出最优分配方案}return 0;
}

http://www.lryc.cn/news/572305.html

相关文章:

  • 八字排盘小游戏微信流量主小程序开源
  • 【嵌入式硬件实例】-555定时器控制舵机/伺服电机
  • 坤驰科技QTS4200战鹰(Battle Eagle)系列实时频谱分析记录回放系统
  • day09——Java基础项目(ATM系统)
  • AI免费工具:promptpilot、今天学点啥、中英文翻译
  • HarmonyOS性能优化——并发能力使用
  • ULS23 挑战:用于计算机断层扫描中 3D 通用病变分割的基准模型及基准数据集|文献速递-深度学习医疗AI最新文献
  • 国产USRP X440 PRO:超大带宽、多通道相参同步的旗舰型软件无线电设备
  • 高密度HDI板与普通pcb有什么区别?
  • Singularity 安装
  • Postman 的 Jenkins 管理 - 手动构建
  • Burp suite2024+新版本中英文等宽字体设置让其更美观显示
  • 额度互动促进金融健康,蚂蚁消金创新智能实时交互式风控系统
  • 【深度学习:进阶篇】--3.2.经典分类网络结构(CNN)
  • Stroke-based Cyclic Amplifier (SbCA方法):实现图像任意尺度超清放大
  • 端口安全配置示例
  • 安卓JetPack篇——LifeCycle原理
  • flink如何基于Pekko实现RPC调用
  • 神经网络试题
  • DL___线性神经网络
  • 数据结构 二叉树理论、递归理论与快速排序理论 6.19
  • 01.线性代数是如何将复杂的数据结构转化为可计算的数学问题,这个过程是如何进行的
  • OpenAI的Prompt工程
  • 03.自动特征提取(深度学习)核心逻辑:通过多层非线性变换,让模型自动学习从原始数据到高层特征的映射。为什么多层非线性变换可以达到这样的效果?
  • 【LINUX网络】网络socet接口的基本使用以及实现简易UDP通信
  • Linux内存进阶
  • 七彩喜智慧康养平台:重构银发生活的数字守护网
  • LeetCode 2187.完成旅途的最少时间
  • 数据库连接池(Druid、HikariCP)详解
  • vector模拟实现中的迭代器失效问题