问题 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,请自行管理内存。
来源
[
提交][
状态][
讨论版]