雇佣K个工人的最小费用 Minimum Cost to Hire K Workers
2018-10-06 20:17:30
问题描述:
问题求解:
问题规模是10000,已经基本说明是O(nlogn)复杂度的算法,这个复杂度最常见的就是排序算法了,本题确实是使用排序算法来进行进行求解。
本题中指出最后支付的费用和工人的quality相关,也就是说
paid[i] : quality[i] = paid[j] : quality[j] = ratio(固定值)
换言之我们可以按照wage[i] / quality[i]来进行排序,另外还需要维护一个优先队列,大小为K,在超过K之后需要将quality最大的数进行排除。
public double mincostToHireWorkers(int[] quality, int[] wage, int K) {double res = Double.MAX_VALUE;int n = quality.length;double[][] workers = new double[n][2];for (int i = 0; i < n; i++) {workers[i][0] = wage[i] * 1.0 / quality[i];workers[i][1] = quality[i];}Arrays.sort(workers, new Comparator<double[]>() {@Overridepublic int compare(double[] o1, double[] o2) {return Double.compare(o1[0], o2[0]);}});PriorityQueue<Double> pq = new PriorityQueue<>();double curSum = 0;for (double[] worker : workers) {curSum += worker[1];pq.add(-worker[1]);if (pq.size() > K) curSum += pq.poll();if (pq.size() == K) res = Math.min(res, curSum * worker[0]);}return res;}
转载于:https://www.cnblogs.com/TIMHY/p/9748331.html
雇佣K个工人的最小费用 Minimum Cost to Hire K Workers相关推荐
- 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)
代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g 提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...
- 力扣 857. 雇佣 K 名工人的最低成本
题目 有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 k 名工人组成一个 ...
- 【数组】雇佣 K 名工人的最低成本
题目描述 有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 k 名工人组成 ...
- 857. 雇佣 K 名工人的最低成本
有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 k 名工人组成一个工资组 ...
- 【857. 雇佣 K 名工人的最低成本】
来源:力扣(LeetCode) 描述: 有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . ...
- POJ - 2516 Minimum Cost 最小费用最大流
题目链接 题意:给n,m,k表示商店数,储存店数,种类数 然后给n*k表示每个水果店需求每种种类的数量: 表示成 need[i][j] 再给m*k表示每个储存店每种种类数量: 表示成store[i][ ...
- POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)
题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...
- POJ - 2516 Minimum Cost(最小费用最大流)
题目链接:点击查看 题目大意:给出n个买家,m个货点,以及k种货物,接下来按照顺序依次给出一个n*k的矩阵,表示每个买家对于每种货物的需求,一个m*k的矩阵,表示每个货点能供给货物的数量,k个n*m的 ...
- LeetCode-995. K连续位的最小翻转次数(Minimum Number of K Consecutive Bit Flips)
K连续位的最小翻转次数 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K ...
最新文章
- 开源 java CMS - FreeCMS2.4 工作流管理
- 和功率的计算公式_电机电流的计算公式是什么,具体怎么计算?
- hdu 4305 概率dp
- 【HDU - 6231】K-th Number(二分,思维)
- 【Java】七巧板着色问题
- oracle中累计求和_Excel中常见的7种求和公式
- python菜鸟教程100例-Python 练习实例14
- 2014年感悟:一万年太久,只争朝夕
- 虚拟机全屏后隐藏vmware菜单栏的问题
- Windows API 教程(七) hook 钩子监听
- 代驾APP开发多少钱才合适,你真知道吗
- 华为IT“智”存高远,普“慧”于民
- 计算机网络 5 - 链路层
- ipad使用的PDF书籍没有目录怎么办?
- Docker下载速度慢,怎么解决?
- get_article_info
- armadillo + openblas 编译
- 设计模式 -- 工厂
- [北京]华兴资本招聘初级全栈工程师 (junior full stack developer)
- 单招计算机试题出处,2017年职业技术学院单独招生综合素质测试试题库及答案...