Cameron 和 Jamie 是一对长期的生活伴侣,最近他们刚为人父母!照顾婴儿虽然令人兴奋,但也充满挑战。鉴于两位家长都有科学头脑,他们决定用科学的方法来照顾婴儿。
Cameron 和 Jamie 正在制定日常作息,需要决定在每个时间段由谁主要负责照顾婴儿。他们在整个关系中一直是平等的伙伴,他们不想改变这一点,因此他们决定每人每天正好负责 12 小时(720 分钟)。
Cameron 和 Jamie 还有其他他们需要或想要独自完成的活动。Cameron 有 $A_C$ 个这样的活动,Jamie 有 $A_J$ 个。这些活动每天都在相同的时间进行。Cameron 的活动与 Jamie 的活动互不重叠,因此至少有一位家长总是有空照顾婴儿。
Cameron 和 Jamie 希望制定一个每日婴儿护理时间表,满足以下条件:
- 预定的婴儿护理时间不得干扰预定的活动。也就是说,在 Cameron 进行活动期间,必须由 Jamie 负责照顾婴儿,反之亦然。
- Cameron 和 Jamie 每人必须正好被分配 720 分钟。
- 交换次数——即负责照顾婴儿的人从一方换到另一方的次数——必须尽可能少。
例如,假设 Jamie 和 Cameron 各有一个活动:Jamie 在上午 9 点到 10 点有一个活动,Cameron 在下午 2 点到 3 点有一个活动。一种可能但非最优的时间表是:Jamie 在午夜到凌晨 6 点以及中午到下午 6 点负责照顾婴儿,Cameron 在凌晨 6 点到中午以及下午 6 点到午夜负责照顾婴儿。这满足了前两个条件,总共需要 4 次交换,分别发生在午夜、凌晨 6 点、中午和下午 6 点。如果午夜发生了交换,它只被计为一次,而不是零次或两次。
一个更好的选择是让 Cameron 从午夜到中午负责照顾婴儿,Jamie 从中午到午夜负责照顾婴儿。这个时间表也满足前两个条件,但它只使用了 2 次交换,这是可能的最小值。
给定 Cameron 和 Jamie 的活动列表以及上述限制,每日时间表中可能的最小交换次数是多少?
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个整数 $A_C$ 和 $A_J$,分别表示 Cameron 和 Jamie 的活动数量。接下来有 $A_C + A_J$ 行。前 $A_C$ 行每行包含两个整数 $C_i$ 和 $D_i$。Cameron 的第 $i$ 个活动在午夜开始后的第 $C_i$ 分钟开始,在午夜开始后的第 $D_i$ 分钟结束(耗时正好 $D_i - C_i$ 分钟)。最后 $A_J$ 行每行包含两个整数 $J_i$ 和 $K_i$,表示 Jamie 的一个活动的开始和结束时间,单位为从午夜开始计算的分钟数(格式与 Cameron 的相同)。没有任何活动跨越两天,也没有两个活动重叠(除了一个活动可能在另一个活动结束时立即开始,但此时仍可能发生交换)。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是题目描述中要求的最小可能交换次数。
数据范围
时间限制:每个测试集 20 秒。 内存限制:1 GB。 $1 \le T \le 100$。 $0 \le C_i < D_i \le 24 \times 60$,对于所有 $i$。 $0 \le J_i < K_i \le 24 \times 60$,对于所有 $i$。 所有区间 $\{[C_i, D_i) \text{ 对于所有 } i\} \cup \{[J_i, K_i) \text{ 对于所有 } i\}$ 中任意两个区间的交集为空。 (区间左闭右开,这确保了两个完全连续的区间之间没有空隙,但也不会重叠。) 所有 $\{D_i - C_i \text{ 对于所有 } i\}$ 的总和 $\le 720$。 所有 $\{K_i - J_i \text{ 对于所有 } i\}$ 的总和 $\le 720$。
小型数据集(测试集 1 - 可见)
$0 \le A_C \le 2$。 $0 \le A_J \le 2$。 $1 \le A_C + A_J \le 2$。
大型数据集(测试集 2 - 隐藏)
$0 \le A_C \le 100$。 $0 \le A_J \le 100$。 $1 \le A_C + A_J \le 200$。
样例
输入 1
5 1 1 540 600 840 900 2 0 900 1260 180 540 1 1 1439 1440 0 1 2 2 0 1 1439 1440 1438 1439
输出 1
Case #1: 2 Case #2: 4 Case #3: 2 Case #4: 4 Case #5: 6
说明
注意,Case #4 和 #5 不会出现在小型数据集中。
Case #1 是题目描述中提到的例子。
在 Case #2 中,Jamie 必须覆盖 Cameron 的所有活动时间,然后 Cameron 必须覆盖所有剩余时间。这个时间表需要四次交换。
在 Case #3 中,午夜发生了一次从 Cameron 到 Jamie 的交换。无论父母如何分配剩余的 1438 分钟非活动时间,都必须至少有一次从 Jamie 到 Cameron 的交换,并且没有理由增加超过这个次数的交换。
在 Case #4 中,请注意同一位家长或不同家长之间可能存在背靠背的活动。午夜没有交换,因为 Cameron 在午夜之前和之后都有活动。然而,时间表需要在 Jamie 的活动之间为 Cameron 增加一些时间,总共需要 4 次交换。请注意,在第 2 分钟到第 1438 分钟之间的某个位置增加一个长度为 718 的 Cameron 时间段是最优的,但增加的时间段的具体位置不会影响交换次数,因此存在多个最优时间表。
在 Case #5 中,一个可能的最优时间表是将 Cameron 分配到(以分钟计)100-200、500-620 和 900-1400 的时间段。