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相关推荐

  1. 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)

    代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g  提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...

  2. 力扣 857. 雇佣 K 名工人的最低成本

    题目 有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 k 名工人组成一个 ...

  3. 【数组】雇佣 K 名工人的最低成本

    题目描述 有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 k 名工人组成 ...

  4. 857. 雇佣 K 名工人的最低成本

    有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 k 名工人组成一个工资组 ...

  5. 【857. 雇佣 K 名工人的最低成本】

    来源:力扣(LeetCode) 描述: 有 n 名工人. 给定两个数组 quality 和 wage ,其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . ...

  6. POJ - 2516 Minimum Cost 最小费用最大流

    题目链接 题意:给n,m,k表示商店数,储存店数,种类数 然后给n*k表示每个水果店需求每种种类的数量: 表示成 need[i][j] 再给m*k表示每个储存店每种种类数量: 表示成store[i][ ...

  7. POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)

    题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...

  8. POJ - 2516 Minimum Cost(最小费用最大流)

    题目链接:点击查看 题目大意:给出n个买家,m个货点,以及k种货物,接下来按照顺序依次给出一个n*k的矩阵,表示每个买家对于每种货物的需求,一个m*k的矩阵,表示每个货点能供给货物的数量,k个n*m的 ...

  9. LeetCode-995. K连续位的最小翻转次数(Minimum Number of K Consecutive Bit Flips)

    K连续位的最小翻转次数 在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0. 返回所需的 K ...

最新文章

  1. 开源 java CMS - FreeCMS2.4 工作流管理
  2. 和功率的计算公式_电机电流的计算公式是什么,具体怎么计算?
  3. hdu 4305 概率dp
  4. 【HDU - 6231】K-th Number(二分,思维)
  5. 【Java】七巧板着色问题
  6. oracle中累计求和_Excel中常见的7种求和公式
  7. python菜鸟教程100例-Python 练习实例14
  8. 2014年感悟:一万年太久,只争朝夕
  9. 虚拟机全屏后隐藏vmware菜单栏的问题
  10. Windows API 教程(七) hook 钩子监听
  11. 代驾APP开发多少钱才合适,你真知道吗
  12. 华为IT“智”存高远,普“慧”于民
  13. 计算机网络 5 - 链路层
  14. ipad使用的PDF书籍没有目录怎么办?
  15. Docker下载速度慢,怎么解决?
  16. get_article_info
  17. armadillo + openblas 编译
  18. 设计模式 -- 工厂
  19. [北京]华兴资本招聘初级全栈工程师 (junior full stack developer)
  20. 单招计算机试题出处,2017年职业技术学院单独招生综合素质测试试题库及答案...

热门文章

  1. 工具使用-----Jmeter的基础用法
  2. mysqld 多线程 用pstree -p 显示
  3. eclipse中配置c++开发环境 Eclipse + CDT + MinGW
  4. 表单提交数据大小的限制
  5. 安装配置gitlab
  6. 树莓派3代刷ubuntu mate在命令行下配置wifi不能连接的一个诡异的bug的解决
  7. iOS 使点击事件穿透透明的UIView
  8. 浅析概率中的频率学派观点和贝叶斯学派观点
  9. Maven包装过程中跳过测试
  10. 遍历二叉树的非递归算法