#P6359. [CEOI2018] Cloud computing

[CEOI2018] Cloud computing

题目背景

译自 CEOI2018 Day1 T1. Cloud Computing

题目描述

Johnny 创立了 Bytecomp,一家提供云计算能力的公司。这样的公司通常拥有许多快速的计算机,可以让客户在上面进行计算。

Johnny 仍然没有购买任何机器。他去了一家计算机商店,收到了一个包含所有 nn 台可用的计算机的清单。每台计算机都可以用三个属性描述:处理器内核数 cic_i,时钟频率 fif_i 和价格 viv_i。这样的计算机包含 cic_i 个独立的内核,所以他们可以被分配不同的任务。

当客户订购资源时,她会指定所需的内核数 CjC_j 和最小的时钟频率 FjF_j。订单还包含客户愿意支付的价格 VjV_j。如果接受订单,Bytecomp 需要提供客户所需计算能力的独占访问权。Johnny 需要选择 CjC_j 个核心(可能来自不同的计算机),且它们的时钟频率至少为 FjF_j,这些核心不能被分配给其它订单。

帮助 Johnny 赚尽可能多的钱:接受一个最优的订单子集,选择所有计算机的一个子集来满足所有接受了的订单。你的目标是最大化利润,即为客户提供计算能力的收入与购买计算机的成本之差。

输入格式

标准输入的第一行包含一个整数 nn,表示商店中可用计算机的数量。

接下来 nn 行,每行描述一台计算机,包含三个空格隔开的整数 ci,fi,vic_i, f_i, v_i,分别表示内核数,时钟频率和价格。

接下来一行一个整数 mm,表示客户的订单数量。

接下来 mm 行,每行描述一个订单,包含三个空格隔开的整数 Cj,Fj,VjC_j, F_j, V_j,分别表示需要的核心数,最低的允许的时钟频率以及预算。

输出格式

标准输出唯一的一行包含一个整数,表示能够得到的最大利润。

4
4 2200 700
2 1800 10
20 2550 9999
4 2000 750
3
1 1500 300
6 1900 1500
3 2400 4550
350

提示

样例解释

一共有四台可用的计算机和三个订单。

最佳方案是购买两台价格为 700700750750(总计 14501450)的四内核的计算机,然后接受前两个订单获得 300+1500=1800300+1500=1800 的收益。

我们获得了四个时钟频率为 20002000 的内核,和四个时钟频率为 22002200 的内核。可以将其中六个分配给第二个订单(需要 19001900 的时钟频率),再将其中一个分配给第一个订单(需要 15001500 的时钟频率),剩下一个核心不使用,这是允许的。

总利润为 18001450=3501800-1450=350

数据规模与约定

对于 100%100\% 的数据,$1\le n\le 2\times 10^3,\ 1\le c_i,C_i\le 50,\ 1\le f_i,F_i,v_i,V_i\le 10^9$。

所有测试数据被划分成若干个有附加限制的子任务,每个子任务中包含若干测试点。

子任务 附加限制 分值
11 n15n \le 15 1818
22 m15m \le 15
33 n,m100n,m \le 100ci=Cj=1c_i = C_j = 1
44 fi=Fj=1f_i = F_j = 1
55 vi=Vj=1v_i = V_j = 1
66 无附加限制 1010