P9274 [AGM 2023 资格赛] 建设计划
题目描述
一组工程师正在计划建造一座新工厂。为了使他们的工厂可靠,他们希望以恒定且可靠的单位每秒速率创建各种物品。他们可以使用不同的机器来制作这些材料。每个机器都有自己的速度,影响制作过程。每种材料都有自己的制作配方,必须在特定的机器执行。
您将获得每个机器的描述以及您需要的每种材料和中间材料的配方。你也会得到一份材料清单,你必须以一定的速度生产,这样你的工厂是可靠的。
我们认为一种机器配置是最优的,当且仅当如果从配置中移除任意一台机器,至少有一种材料的生产速率小于所需的速率。
你需要找到一种最优的配置。
输入格式
输入的第一行将包含一个整数 $M(1≤M≤100)$,表示我们拥有的机器类型的数量。在接下来的 $M$ 行中,每一行都有一个字符串 $n(1≤|n|≤30)$ 和一个数字 $s(0.01≤s≤100)$,表示一台机器的名称和速度。
下面一行输入将包含一个整数 $N(1≤N≤100)$,表示配方的数量。
接下来输入 $n$ 组配方。对于每组配方,在配方的第一行,字符串 $p(1≤|p|≤30)$ 表示要制作的材料的名称,字符串 $l(1≤|l|≤30)$ 表示制作过程中使用的机器名称,数字 $t(0.01≤t≤100)$ 表示以正常速度制作材料所需的时间(以秒为单位)。在下一行中,有一个数字 $k(0≤k≤15)$,表示生产当前这个材料过程中所需另外材料的种类数。下面的 $k$ 行中,每一行包含一个字符串 $n(1≤|n|≤30)$ ,表示所需材料的名称,一个整数 $c(1≤c≤10)$,表示所需的相应材料的单位数。
下一行将包含一个整数 $Q(1≤Q≤100)$,表示需求的数量。
下面的每一条 $Q$ 行都包含一个字符串 $m(1≤|m|≤30)$,表示需要这个需求下生产的材料的名称,以及一个整数 $c(1≤c≤10)$,表示每秒需要生产的该材料的单位数。
$s$ 和 $t$ 都是有两个小数点的浮点数。保证存在最优配置。保证最优解中每种材料的生产速率不超过每秒 $10^9$个单位,每种材料都可以使用独特的配方制作。并且保证配方的需求关系不存在环。
输出格式
总共 $n$ 行,在第 $n$ 行,输出 $p_i,l_i,r_i$,其中 $r_i$ 表示用来执行第 $i$ 个配方的机器数量。