问题 1001. -- 又是苹果

1001: 又是苹果

时间限制:1000 ms 内存限制:128 MB
提交:1519 解决:274
[ 提交][ 状态][ 讨论版]

题目描述

最近,亮亮和小 W 都对苹果很感兴趣!在研究了“最大苹果矩阵”和“给苹果树施肥”的问题后,他们又遇到了一个新的问题:

有一块长 $n$ 米、宽 $m$ 米的地,现在小 W 把地划分成边长 1 米的小正方形块,共 $n\times m$ 个块。每个块中可能种有一棵苹果树,或放有一个 iPhone,也可以什么也没有。然而,亮亮拥有一种超能力,可以将 2 个宽 1 米、长度相同的矩形块在空间中直接交换。

亮亮经常对着农场施展超能力,为了不把自己搞晕,他每次总是选择两整行(长度均为 $m$ 米)或两整列(长度均为 $n$ 米)进行交换。小 W 对此十分恼火——当他想拿 iPhone 打游戏时,却莫名其妙地撞在了苹果树上。小 W 要求你写一个程序,帮助他确定某一正方形块中放了什么东西。

输入

输入包含多组数据,请处理到文件结束。 每组数据,第一行 2 个整数 $n$, $m$,表示地的尺寸。 之后 $n$ 行,每行 $m$ 个英文字母,大写的 $T$ 表示这里种有苹果树,小写的i表示这里放有 iPhone,其他字符表示这里什么也没有。 之后 $1$ 行,一个整数 $Q$,表示小 W询问的次数。 之后 $Q$ 行,包含 $3$ 个整数,可能有以下情况:

  • 1 $i_1$ $j_1$ 表示小 W 想知道第 $i_1$ 行第 $j_1$ 列的方块中有什么东西。
  • 2 $i_1$ $i_2$ 表示亮亮交换了第 $i_1$ 行与第 $i_2$ 行。
  • 3 $j_1$ $j_2$ 表示亮亮交换了第 $j_1$ 列与第 $j_2$ 列。

对于 $100\%$ 的数据,有 $1\le n\times m\le 10^6$,$1\le Q\le 10^5$,$1\le i_1, i_2\le n$,$1\le j_1, j_2\le m$。

输出

对于每组数据,输出以一行“Case #x:”开头,x表示数据的编号,从1开始。
对于小W的每次格式为“1 i j”的询问,输出一行。若方块中是苹果树,输出"Tree"。若方块中是iPhone,输出“Phone”。若方块中什么也没有,输出“Empty”。

样例输入

2 2 Ti Ti 2 1 1 1 1 2 2 3 3 Tct Iai qqT 3 1 1 3 2 1 2 1 1 3

样例输出

Case #1: Tree Phone Case #2: Empty Phone

提示

输入数据只保证 $n\times m$ 在 $10^6$ 以内,也就是说 $n$ 和 $m$ 都可能高达 $10^6$。直接开 $10^6\times 10^6$ 的数组肯定会MLE,请自行管理内存。

来源

[ 提交][ 状态][ 讨论版]
Baidu
map