📅  最后修改于: 2023-12-03 15:28:42.481000             🧑  作者: Mango
有 $n$ 个门和 $n$ 个钥匙,每个门和钥匙都有一把专门的钥匙或专门的锁,要求将钥匙配对门,使得每个门都能被打开。钥匙可以重复使用。每次尝试使用钥匙打开门的操作需要花费单位时间。你的任务是设计一个有效的算法,要求最小化总时间复杂度。
输入的第一行包含一个整数 $n$,表示门的个数。
接下来 $n$ 行,每行代表一个门和它对应的钥匙。每行格式为 门 钥匙
,中间用空格分隔。如果一行中门和钥匙之间用一个 '-' 进行分隔,那么表示这个门没有对应的钥匙;若门和钥匙之间用一个 '+' 进行分隔,那么表示这个钥匙没有对应的门。
输出的第一行包含一个整数,表示需要最少的时间才能完成任务。
接下来若干行,每行表示一次打开门的操作。每行格式为 时间 门 钥匙
,中间用空格分隔。时间为负数表示该操作不需要花费时间。
4
A a
B -
C b
D c
1
1 C b
-1 A a
1 D c
对于这个例子,我们有以下两种解决方案:
这里我们选择第一种方案。