QOJ.ac

QOJ

Limite de temps : 15 s Limite de mémoire : 1024 MB Points totaux : 32

#12073. 位运算派对

Statistiques

如今,机器人可以驾驶汽车,但它们能举办一场精彩的派对吗?Code Jam 团队对这一课题的研究尚处于早期阶段。我们刚刚部署了 $R$ 个机器人购物者到当地超市购买派对用品,用于我们在多伦多的全球总决赛,但它们对加拿大派对的初步模型非常简单:它们只购买了 $B$ 个“比特”(bit,当地的一种小型甜甜圈状零食)。我们稍后会改进它们的 AI,但现在,我们想帮助它们尽快买齐所有这些比特。

超市有 $C$ 个收银员可以扫描顾客的购买商品。第 $i$ 个收银员: 每位顾客最多接受 $M_i$ 个商品。 扫描每个商品需要 $S_i$ 秒。 * 处理付款和打包比特还需要 $P_i$ 秒。

也就是说,携带 $N$ 个比特到第 $i$ 个收银员处的顾客(其中 $N$ 必须小于或等于 $M_i$)与该收银员交互的总时间为 $S_i \times N + P_i$ 秒。

在机器人与任何收银员交互之前,你可以随意将比特分配给机器人。(比特必须保持完整;你不能将它们拆分成碎片!)任何没有获得比特的机器人将无法与收银员交互,并会失望地离开。

然后,对于每个至少拥有一个比特的机器人,你将选择一个不同的收银员。(两个机器人不能使用同一个收银员,且一个机器人不能使用超过一个收银员。)所有机器人在时间 0 开始与它们的收银员交互。注意,一旦机器人完成与收银员的交互,它就不能再被给予更多比特,也不能与其他收银员交互。

如果你帮助机器人做出最优选择,所有机器人完成与收银员交互的最早时间是多少?

输入格式

输入的第一行给出测试用例的数量 $T$。接着是 $T$ 个测试用例。每个测试用例的第一行包含三个整数 $R$、$B$ 和 $C$:分别是机器人购物者、比特和收银员的数量。

然后有 $C$ 行。第 $i$ 行代表第 $i$ 个收银员,包含三个整数 $M_i$、$S_i$ 和 $P_i$:分别是该收银员的最大比特数、每个比特的扫描时间(秒)以及付款/打包时间(秒),如上所述。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是所有机器人完成与收银员交互的最早时间(以秒为单位)。

数据范围

$1 \le T \le 100$。 $1 \le M_i \le 10^9$,对于所有 $i$。 $1 \le S_i \le 10^9$,对于所有 $i$。 $1 \le P_i \le 10^9$,对于所有 $i$。 $R$ 个最大的 $M_i$ 之和 $\ge B$。(至少存在一个收银员子集能够处理所有比特。)

子任务

测试集 1(可见) $1 \le R \le C \le 5$。 $1 \le B \le 20$。

测试集 2(隐藏) $1 \le R \le C \le 1000$。 $1 \le B \le 10^9$。

样例

样例输入 1

3
2 2 2
1 2 3
1 1 2
2 2 2
1 2 3
2 1 2
3 4 5
2 3 3
2 1 5
2 4 2
2 2 4
2 5 1

样例输出 1

Case #1: 5
Case #2: 4
Case #3: 7

说明

在样例 1 中,有两个机器人、两个比特和两个收银员,每个收银员只能处理一个商品。因此,你必须给每个机器人分配一个比特。收银员 1 需要 5 秒,收银员 2 需要 3 秒,所以所需时间为 5 秒。

样例 2 与前一个案例类似,不同之处在于现在收银员 2 最多可以处理 2 个商品。因此,最好将所有比特给一个机器人,并让该机器人使用收银员 2。这需要每个商品 1 秒加上 2 秒 = 4 秒。

在样例 3 中,最优策略是派遣一个携带 2 个比特的机器人到收银员 2,并派遣两个各携带 1 个比特的机器人到其他任意收银员处。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.