《算法竞赛进阶指南》任务

任务

今天某公司有M个任务需要完成。

每个任务都有相应的难度级别和完成任务所需时间。

第i个任务的难度级别为yiyi,完成任务所需时间为xixi分钟。

如果公司完成此任务,他们将获得(500 * xixi + 2 * yiyi)美元收入。

该公司有N台机器,每台机器都有最长工作时间和级别。

如果任务所需时间超过机器的最长工作时间,则机器无法完成此任务。

如果任务难度级别超过机器的级别,则机器无法完成次任务。

每台机器一天内只能完成一项任务。

每个任务只能由一台机器完成。

请为他们设计一个任务分配方案,使得该公司能够最大化他们今天可以完成的任务数量。

如果有多种解决方案,他们希望选取赚取利润最高的那种。

输入格式
输入包含几个测试用例。

对于每个测试用例,第一行包含两个整数N和M,分别代表机器数量和任务数量。

接下来N行,每行包含两个整数xi,yixi,yi,分别代表机器最长工作时间和机器级别。

再接下来M行,每行包含两个整数xi,yixi,yi,分别代表完成任务所需时间和任务难度级别。

输出格式
对于每个测试用例,输出两个整数,代表公司今天可以完成的最大任务数以及他们将获得的收入。

数据范围
1≤N,M≤1000001≤N,M≤100000,
0<xi<14400<xi<1440,
0≤yi≤1000≤yi≤100
输入样例:
1 2
100 3
100 2
100 1
输出样例:
1 50004

//首先本题是一个典型的点对点的问题
//我们首先要考虑完成的数目 
//然后在考虑效益的问题
//让我们在细细研究一下效益的问题,首先每个任务的效益是固定的
//令外根据难度级别和完成时间对效益的影响,其中其决定的影响是
//完成时间
//那我们就可以将任务和机器都分别以完成时间为第一关键字和难度级别 
//为第二关键字,进行降序排序
//并进行降序的遍历任务让更多先遍历到的任务更够执行,则可以获得
//最高的价值


//利用贪心的算法我们可以找到很多种(最多完成任务数)的情况
//而经过排序之后,我们找到的就是这其中完成时间总和最大的情况
#include<iostream>
#include<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值