#abc475e. Quiz Competition: Qualifiers

    ID: 4427 Type: Default 2000ms 1024MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>提高+/省选-字典树思维动态维护

Quiz Competition: Qualifiers

题目描述

某问答比赛举行了预选赛。参赛者共 NN 人,编号 11 到 NN,最多有 MM 人能够晋级。

预选赛由 KK 道二选一的题目组成,每题的答案是 o 或 x。参赛者 ii 对第 jj 题的作答,是字符串 SiS_i 的第 jj 个字符;第 jj 题的正确答案是字符串 TT 的第 jj 个字符。

晋级者按下列流程确定:

  • 最初晋级者与淘汰者都是 00 人,全部 NN 人都是待定者;
  • 按 k=1,2,…,Kk = 1, 2, \ldots, K 的顺序执行下面的处理:
    • 若「已晋级人数 ++ 待定者中第 kk 题答对的人数」不超过 MM,则把待定者中第 kk 题答对的人全部定为晋级者;
    • 否则,把待定者中第 kk 题答错的人全部定为淘汰者;
  • 最后把所有仍是待定者的人全部定为淘汰者。

给出 QQ 个询问,请按顺序处理:

  • 给定整数 i,ji, j。把参赛者 ii 对第 jj 题的作答由 o 改为 x、或由 x 改为 o。之后判断参赛者 ii 能否晋级。

每个询问中的修改会一直保留,影响之后的所有询问。

输入格式

N M K
T
S_1
...
S_N
Q
query_1
...
query_Q

其中每个询问的格式为:

i j

输出格式

输出 QQ 行。第 qq 行:若第 qq 个询问指定的参赛者能晋级则输出 Yes,否则输出 No。

输入示例 1

5 3 3
oxo
oxo
oxx
xxo
xox
xoo
3
5 1
1 3
4 1

输出示例 1

Yes
Yes
No

示例 1 说明

  • 第 11 个询问到来前:第 11 题参赛者 1,21,2 晋级,第 22 题参赛者 33 晋级,晋级者是 {1,2,3}\{1,2,3\}。
  • 第 11 个询问后:第 11 题参赛者 1,2,51,2,5 晋级,晋级者变为 {1,2,5}\{1,2,5\}。参赛者 55 能晋级,输出 Yes。
  • 第 22 个询问后:晋级者仍是 {1,2,5}\{1,2,5\}。参赛者 11 能晋级,输出 Yes。
  • 第 33 个询问后:第 11 题参赛者 33 被淘汰,第 22 题参赛者 1,21,2 晋级,第 33 题参赛者 55 晋级,晋级者仍是 {1,2,5}\{1,2,5\}。参赛者 44 不能晋级,输出 No。

注意第 33 个询问里,被修改的参赛者 44 自己没有晋级,但他的修改改变了整个流程(第 11 题答对的人数变成 44 人,超过了 M=3M=3,于是走了「淘汰答错者」的分支)。

输入示例 2

3 1 2
ox
xo
oo
ox
4
3 1
1 1
2 2
1 2

输出示例 2

No
No
Yes
No

示例 2 说明

M=1M = 1,名额极少,因此绝大多数时候都会走「淘汰答错者」的分支。这组数据用来检验 MM 取最小值时的处理。

输入示例 3

1 1 1
o
o
2
1 1
1 1

输出示例 3

No
Yes

示例 3 说明

N=M=K=1N = M = K = 1 是允许的最小规模。第 11 个询问把唯一参赛者的作答改错,此时第 11 题答对人数为 00,0+0≤10 + 0 \le 1 走「晋级答对者」分支,但他不在其中,最终作为待定者被淘汰,输出 No;第 22 个询问改回正确,他被判晋级,输出 Yes。

这组数据说明:走「晋级答对者」分支时,答错的人并不会被淘汰,而是继续留作待定者。

约束条件

  • 1≤M≤N≤3×1041 \le M \le N \le 3 \times 10^4
  • 1≤K≤2001 \le K \le 200
  • SiS_i 与 TT 都是仅由 o、x 组成的长度为 KK 的字符串
  • 1≤Q≤5×1041 \le Q \le 5 \times 10^4
  • 每个询问满足 1≤i≤N1 \le i \le N,1≤j≤K1 \le j \le K