luogu#P10274. [USACO24OPEN] Logical Moos B

[USACO24OPEN] Logical Moos B

题目描述

Farmer John 有一个布尔语句,包含 NN 个关键字(1N<21051\le N<2\cdot 10^5NN 为奇数)。奇数位置仅出现 true\texttt{true}false\texttt{false},偶数位置上仅出现 and\texttt{and}or\texttt{or}

一个 xOPERATORyx \operatorname{OPERATOR} y 形式的短语,其中 xxyytrue\texttt{true}false\texttt{false},而 OPERATOR\operatorname{OPERATOR}and\texttt{and}or\texttt{or} ,按如下规则求值:

  • xandyx \operatorname{and} y:如果 xxyy 均为 true\texttt{true},则求值结果为 true\texttt{true},否则为 false\texttt{false}
  • xoryx \operatorname{or} y:如果 xxyytrue\texttt{true},则求值结果为 true\texttt{true},否则为 false\texttt{false}

在求值该语句时,FJ 必须考虑 Moo 语言中的运算符优先级。与 C++ 类似,and\operatorname{and} 优先级高于 or\operatorname{or}。更具体地说,在求值该语句时,重复以下步骤直至该语句仅包含一个关键字。

  1. 如果语句中包含 and\operatorname{and},选择其中任意一个,并将其周围的短语替换为其求值结果。
  2. 否则,该语句包含 or\operatorname{or}。选择其中任意一个,并将其周围的短语替换为其求值结果。

可以证明,如果在指定的一个步骤中可以求值多个短语,那么选择哪一个求值并不重要;该语句最终的求值结果将始终相同。

FJ 有 QQ1Q21051\le Q\le 2\cdot 10^5)个询问。在每个询问中,他给你两个整数 llrr1lrN1\le l\le r\le Nllrr 均为奇数),并删除关键字 ll 到关键字 rr 之间的段。反过来,他希望用一个简单的 true\texttt{true}false\texttt{false} 替换他刚刚删除的段,以使整个语句的求值结果为某个指定的布尔值。帮助 FJ 判断是否可行!

输入格式

输入的第一行包含 NNQQ

下一行包含 NN 个字符串,为一个合法的布尔语句。

以下 QQ 行,每行包含两个整数 llrr,以及一个字符串 true\texttt{true}false\texttt{false},表示他希望整个语句的求值结果为 true\texttt{true} 还是 false\texttt{false}

输出格式

输出一个长度为 QQ 的字符串,其中如果第 ii 个询问的结果为可能,则第 ii 个字符为 Y,否则为 N

5 7
false and true or true
1 1 false
1 3 true
1 5 false
3 3 true
3 3 false
5 5 false
5 5 true
NYYYNYY
13 4
false or true and false and false and true or true and false
1 5 false
3 11 true
3 11 false
13 13 true
YNYY

提示

样例解释 1

我们来分析第一个询问:

如果我们删除段 [1,1][1,1] 并替换为 true\texttt{true},那么整个语句将变为:

true and true or true\texttt{true and true or true}

我们对位置 22 处的 and\texttt{and}

关键字求值,得到

true or true\texttt{true or true}

由于我们没有剩下的 and\texttt{and} 关键字,我们必须求值 or\texttt{or} 关键字。求值结束后,余下的是

true\texttt{true}

可以证明,如果我们用 false\texttt{false} 替换该段,该语句仍将求值为 true\texttt{true},因此我们输出 N,因为该语句不可能求值为 false。

对于第二个询问,我们可以将段 [1,3][1,3] 替换为 true,整个语句将求值为 true\texttt{true},因此我们输出 Y

对于第三个询问,由于 [1,5][1,5] 是整个语句,我们可以将其替换为任意内容,因此我们输出 Y

测试点性质

  • 测试点 353-5N,Q102N,Q\le 10^2
  • 测试点 686-8N,Q103N,Q\le 10^3
  • 测试点 9269-26:没有额外限制。