假设有N个工人。每个工人都有质量参数。第i个工人具有质量[i]和最低工资期望工资[i]。现在,我们想雇用K个工人组成一个有薪小组。当我们雇用一组K工人时,我们必须根据以下规则向他们付款-
通过与付费组中的其他人员进行比较,应按照付费组中每个人的质量比例向其支付工资。
带薪组中的每个工人都必须至少获得其最低工资预期。
我们必须找到组成满足上述条件的付费小组所需的最少资金。
因此,如果输入像质量= [10,22,5],工资= [70,52,30]且K = 2,则输出将为105.000。这是因为我们将向第一名工人支付70,第三名工人支付35。
为了解决这个问题,我们将遵循以下步骤-
用q,w和r定义数据
n:=质量的大小
制作大小为n的数据v的数组
对于初始化i:= 0,当i <n时,更新(将i增加1),执行-
v [i]的q:=质量[i]
v [i]的w:=工资[i]
v [i]的r:= v [i]的w / v [i]的q
根据r值对数组v排序
温度:= 0
和:= 0
ans:= inf
定义一个优先级队列pq
对于初始化i:= 0,当i <n时,更新(将i增加1),执行-
ans:=(v [i]的和(sum * r)+ v [i]的w和ans的最小值
x:= pq的顶部元素
总和:=总和-x
从pq中删除元素
如果pq的大小与k相同,则-
如果pq的大小与k-1相同,则-
总和:=总和+ v [i]的q
将v [i]的q插入pq
返回ans
让我们看下面的实现以更好地理解-
#include <bits/stdc++++.h> using namespace std; struct Data { double q, w, r; }; class Solution { public: static bool cmp(Data a, Data b) { return a.r < b.r; } double mincostToHireWorkers(vector<int> &quality, vector<int> &wage, int k) { int n = quality.size(); vector<Data> v(n); for (int i = 0; i < n; i++) { v[i].q = quality[i]; v[i].w = wage[i]; v[i].r = v[i].w / v[i].q; } sort(v.begin(), v.end(), cmp); double temp = 0; double sum = 0; double ans = INT_MAX; priority_queue<int> pq; for (int i = 0; i < n; i++) { if (pq.size() == k) { double x = pq.top(); sum -= x; pq.pop(); } if (pq.size() == k - 1) { ans = min((sum * v[i].r) + v[i].w, ans); } sum += v[i].q; pq.push(v[i].q); } return ans; } }; main(){ Solution ob; vector<int> v = {10,22,5}, v1 = {70,52,30}; cout << (ob.mincostToHireWorkers(v, v1, 2)); }
{10,22,5} {70,52,30} 2
输出结果
105
本文向大家介绍C ++中最小K总和最短的子数组,包括了C ++中最小K总和最短的子数组的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数组A。我们必须找到A的最短,非空,连续子数组的长度,其总和至少为K。如果没有这样的子数组,则返回-1。 因此,如果输入类似于[5,3,-2,2,1]且k = 6,则输出将为2,如我们所见(5 + 3)> = 6 为了解决这个问题,我们将遵循以下步骤- n:
本文向大家介绍在C ++中使数组的GCD成为k的倍数的最小操作,包括了在C ++中使数组的GCD成为k的倍数的最小操作的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数组arr和另一个值k。我们必须找到最小数量的运算,以使数组的GCD等于k的倍数。在这种情况下,操作将增大或减小该值。假设数组类似于{4,5,6},并且k为5。我们可以将4加1,然后将6减1,因此它变为5。这里的操作数为2。
问题内容: 是否有类似于Pylint的东西,它们将查看(或运行)Python脚本,并确定每行(或函数)所需的Python版本? 例如,理论用法: 这样的事情可能吗?我想最简单的方法是将所有Python版本都放到光盘上,并运行每个版本的脚本并查看发生了什么错误。 问题答案: Greg Hewgill的pyqver工具已经有一段时间没有更新了。 vermin是一个类似的实用程序,它以详细模式()显示决
本文向大家介绍C#使用ML.Net完成人工智能预测,包括了C#使用ML.Net完成人工智能预测的使用技巧和注意事项,需要的朋友参考一下 前言 Visual Studio2019 Preview中提供了图形界面的ML.Net,所以,只要我们安装Visual Studio2019 Preview就能简单的使用ML.Net了,因为我的电脑已经安装了Visual Studio2019,所以我不需要重头安装
来自C标准ISO/IEC 9899:201x 5.1.2.3 P6: 符合要求的实现的最低要求是: 对易失性对象的访问严格按照抽象机器的规则进行评估。 在程序终止时,写入文件的所有数据应与根据抽象语义执行程序所产生的结果相同。 交互设备的输入和输出动态应按照7.21.3的规定进行。这些要求的目的是使无缓冲或行缓冲输出尽快出现,以确保提示消息在程序等待输入之前实际出现。
我有两节课。 < code>EmployeeInfo类返回一个< code >雇员类型。 现在,和之间的