#X10F. [LSOT-4] Masuko or Haru?

[LSOT-4] Masuko or Haru?

题目背景

Shion 作为社团活动后的作业,给 Yotsuba 出了一道数据结构题。

Yotsuba 本来是想用水路查资料的,但是查着查着就去和 Haru 聊天了……

但是还有 1 秒就要到下午 5 点了!Yotsuba 只能去询问 Masuko 这道题怎么做了。

Masuko 当然可以在 1 秒之内解决这道题,她现在想考考你看你能不能 1 秒内解决这道题!

题目描述

给你 nn 个长度为 mm 的 01 串。

区间二元组的定义为满足 1lrm1\le l\le r\le m 的二元组 (l,r)(l,r)

区间集合的定义为区间二元组组成的集合。

定义 01 串 aa 关于区间集合 SS 的一次变化为任选一个区间二元组 (l,r)S(l,r)\in Si[l,r],aiai1\forall i\in[l,r],a_i\gets a_i\oplus 1\oplus 代表二进制按位异或)。

定义 01 串 aabb 在区间集合 SS 下等价为 aa 可以在经过任意次关于 SS 的变化后变为 bb

刚开始时 S=S=\emptyset

一共有 qq 次操作,每次操作都为插入操作或询问操作。

插入操作为给定一个区间二元组 (l,r)(l,r)SS{(l,r)}S\gets S\cup \{(l,r)\}

询问操作为给定 x,yx,y,你需要判断第 xx 个 01 串和第 yy 个 01 串是否关于区间集合 SS 等价。

输入格式

第一行,三个整数 n,m,qn,m,q

第二行,一个长为 n×mn\times m 的 01 串,每 mm 个字符代表一个给定的 01 串,即第 (i1)×m+1(i-1)\times m+1 个字符到第 i×mi\times m 个字符表示第 ii 个 01 串。

接下来 qq 行,每行三个正整数,第一个正整数为 opop

  • 如果 op=1op=1 代表为插入操作,接下来两个正整数为 l,rl,r
  • 如果 op=2op=2 代表为询问操作,接下来两个正整数为 x,yx,y

输出格式

对于每个询问操作,输出一行,一个字符串,如果等价则输出 Masuko,否则输出 Haru

样例

2 5 5
1001111001
2 1 2
1 2 3
2 1 2
1 3 4
2 1 2
Haru
Haru
Masuko

样例 1 解释

每个 01 串初始形如:

10011
11001

  • 第一次询问:此时集合 SS 为空。两个 01 串显然不同。
  • 第二次询问:此时集合 SS{(2,3)}\{(2,3)\},则第一个串只能变成 1001111111,无法变得相同,故不等价。
  • 第三次询问:此时集合 SS{(2,3),(3,4)}\{(2,3),(3,4)\},依次进行 (2,3)(2,3) 变换和 (3,4)(3,4) 变换即可变为第二个串。故等价。
10 10 20
1110001000101011110100110000110111001111111110111101001111011111011101000000000111110100010000100110
2 2 1
2 9 6
2 6 10
2 1 1
2 3 2
1 7 9
2 10 10
2 10 4
1 1 7
1 8 8
1 2 3
1 2 7
2 1 9
2 6 1
1 1 3
2 10 7
1 2 4
2 9 1
1 3 7
1 1 5
Haru
Haru
Haru
Masuko
Haru
Masuko
Haru
Haru
Haru
Haru
Haru

数据范围

本题采用捆绑测试。

  • 子任务 1(17 分):n,m10n,m\le 10q20q\le 20
  • 子任务 2(14 分):l=rl=r
  • 子任务 3(16 分):l=r1l=r-1
  • 子任务 4(13 分):插入操作不超过 50005000 次。
  • 子任务 5(21 分):所有的插入操作在所有的询问操作之前。
  • 子任务 6(19 分):无特殊性质。

对于全部的数据,1q,n,m5×1061\le q,n,m\le 5\times 10^6n×m107n\times m\le 10^71lrm1\le l\le r\le m1x,yn1\le x,y\le nop{1,2}op\in\{1,2\}