任务
今天某公司有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<