#P9274. [AGM 2023 资格赛] 建设计划
[AGM 2023 资格赛] 建设计划
题目描述
一组工程师正在计划建造一座新工厂。为了使他们的工厂可靠,他们希望以恒定且可靠的单位每秒速率创建各种物品。他们可以使用不同的机器来制作这些材料。每个机器都有自己的速度,影响制作过程。每种材料都有自己的制作配方,必须在特定的机器执行。
您将获得每个机器的描述以及您需要的每种材料和中间材料的配方。你也会得到一份材料清单,你必须以一定的速度生产,这样你的工厂是可靠的。
我们认为一种机器配置是最优的,当且仅当如果从配置中移除任意一台机器,至少有一种材料的生产速率小于所需的速率。
你需要找到一种最优的配置。
输入格式
输入的第一行将包含一个整数 ,表示我们拥有的机器类型的数量。在接下来的 行中,每一行都有一个字符串 和一个数字 ,表示一台机器的名称和速度。
下面一行输入将包含一个整数 ,表示配方的数量。
接下来输入 组配方。对于每组配方,在配方的第一行,字符串 表示要制作的材料的名称,字符串 表示制作过程中使用的机器名称,数字 表示以正常速度制作材料所需的时间(以秒为单位)。在下一行中,有一个数字 ,表示生产当前这个材料过程中所需另外材料的种类数。下面的 行中,每一行包含一个字符串 ,表示所需材料的名称,一个整数 ,表示所需的相应材料的单位数。
下一行将包含一个整数 ,表示需求的数量。
下面的每一条 行都包含一个字符串 ,表示需要这个需求下生产的材料的名称,以及一个整数 ,表示每秒需要生产的该材料的单位数。
和 都是有两个小数点的浮点数。保证存在最优配置。保证最优解中每种材料的生产速率不超过每秒 个单位,每种材料都可以使用独特的配方制作。并且保证配方的需求关系不存在环。
输出格式
总共 行,在第 行,输出 ,其中 表示用来执行第 个配方的机器数量。
3
assembler 0.50
furnace 0.50
mining_well 0.55
6
iron_plate furnace 3.20
1
iron_ore 1
copper_plate furnace 3.20
1
copper_ore 1
iron_ore mining_well 1.00
0
copper_ore mining_well 1.00
0
copper_cable assembler 0.50
1
copper_plate 1
electronic_circuit assembler 0.50
2
iron_plate 1
copper_cable 3
1
electronic_circuit 10
iron_plate furnace 64
copper_plate furnace 192
iron_ore mining_well 19
copper_ore mining_well 55
copper_cable assembler 30
electronic_circuit assembler 10
3
assembler 0.50
furnace 0.50
mining_well 0.55
4
iron_plate furnace 3.20
1
iron_ore 1
iron_ore mining_well 1.00
0
iron_gear assembler 0.50
1
iron_plate 2
transport_belt assembler 0.50
2
iron_plate 1
iron_gear 1
1
transport_belt 7
iron_plate furnace 135
iron_ore mining_well 39
iron_gear assembler 7
transport_belt assembler 7