#L3404. 「2020-2021 集训队作业」Defend City

「2020-2021 集训队作业」Defend City

题目描述

Alex 是一位电竞选手。

这些天,Alex 正在玩一款战争策略游戏。他的城池可以被看做笛卡尔平面上的一个矩形,它的左下角为 (0,0)(0,0),右上角为 (n+1,n+1)(n+1,n+1)

Alex 建造了 nn 座防御塔来保卫城池。防御塔 ii 位于 (xi,yi)(x_i,y_i),方向为 did_i。方向不同的防御塔能够保护不同的区域,具体来说:

  • di=1d_i = 1,防御塔 ii 能保护区域 {(a,b)axi,byi}\{(a,b) \mid a \ge x_i, b \ge y_i\}
  • di=2d_i = 2,防御塔 ii 能保护区域 {(a,b)axi,byi}\{(a,b) \mid a \le x_i, b \ge y_i\}
  • di=3d_i = 3,防御塔 ii 能保护区域 {(a,b)axi,byi}\{(a,b) \mid a \le x_i, b \le y_i\}
  • di=4d_i = 4,防御塔 ii 能保护区域 {(a,b)axi,byi}\{(a,b) \mid a \ge x_i, b \le y_i\}

如果 Alex 启用了 ee 座防御塔,他每小时将会消耗 ee 的单位能量。他想要启用尽量少数量的防御塔,使得城池中的任何点 (x,y)(x,y)x,yRx,y \in \mathbb{R}0x,yn+10 \le x,y \le n+1)都能被保护。你能找到最优策略吗?

输入格式

输入的第一行给出了测试点组数 TT,接下来是 TT 组测试点。

对于每组测试点,第一行包含一个整数 nn,其中 nn 是防御塔的数量。

接下来的 nn 行,每行包含三个整数 xi,yix_i,y_idid_i,表示防御塔 ii 的位置和方向。

输出格式

输出一行包含 "\texttt{Case #x: y}",其中 \texttt{x} 是测试点编号(从 11 开始),以及 \texttt{y} 是最少数量的防御塔。如果不可能保护整座城池,输出 "\texttt{Impossible}"(不包括引号)。

样例

输入: 22 33 11 11 11 22 22 22 33 33 33 44 11 11 11 22 22 33 22 11 22 11 22 44

输出: Case #11: Impossible Case #22: 44

数据范围与提示

  • 对于 10%10\% 的测试数据,满足 n20n \le 20n100\sum n \le 100
  • 对于 30%30\% 的测试数据,满足 n100n \le 100n500\sum n \le 500
  • 对于 40%40\% 的测试数据,满足 n1000n \le 1000n5000\sum n \le 5000
  • 对于 70%70\% 的测试数据,满足 n105n \le 10^5n5×105\sum n \le 5 \times 10^5
  • 对于全部测试数据,满足 1T1041 \le T \le 10^41n1061 \le n \le 10^6n5×106\sum n \le 5 \times 10^61xi,yin1 \le x_i,y_i \le n1di41 \le d_i \le 4

由于本题输入量较大,请使用较快的读入方式。