2039: [USACO 2024 US Open Contest Bronze] Problem 1. Logical Moos

文件提交:无需freopen 内存限制:256 MB 时间限制:2.000 S
评测方式:普通裁判 命题人:
提交:2 解决:1

题目描述

Farmer John has a boolean statement that is N keywords long (1N<2105N odd). Only 
 or 
 appear in odd positions, while only 
 and 
 appear in even positions.

A phrase of the form x OPERATOR y, where x and y are either 
 or 
, and OPERATOR is 
 or 
, evaluates as follows:


  • : This evaluates to true if both x and y are true, and false otherwise.
  • : This evaluates to true if either x or y is true, and false otherwise.

When evaluating the statement, FJ has to take the order of precedence in Moo Language into account. Similar to C++, and takes priority over 
. More specifically, to evaluate the statement, repeat the following step until the statement consists of only one keyword.

  1. If the statement contains an 
    , choose any of them and replace the phrase surrounding it with its evaluation.
  2. Otherwise, the statement contains an 
    . Choose any of them and replace the phrase surrounding it with its evaluation.

It may be proven that if multiple phrases can be evaluated during a given step, it does not matter which one is chosen; the statement will always evaluate to the same value.

FJ has Q (1Q2105) queries. In each query, he gives you two integers l and r (1lrNl and r are both odd), and deletes the segment from keyword l to keyword r inclusive. In turn, he wishes to replace the segment he just deleted with just one simple  or 
 so that the whole statement evaluates to a certain boolean value. Help FJ determine if it's possible!

输入

The first line contains N and Q.

The next line contains N strings, a valid boolean statement.

The following Q lines contain two integers l and r, and a string 
 or 
, denoting whether he wants the whole statement to evaluate to true or false.

输出

Output a string of length Q, where the i'th character is Y if the i'th query is possible, otherwise 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

提示

Let's analyze the first query:

If we were to replace delete the segment [1,1] and replace it with 
, then the whole statement becomes:

true and true or true

We evaluate the 
 keyword from at position 2 and obtain

true or true

Since we have no 
 keywords left, we have to evaluate the 
 keyword. After evaluation, all that is left is

true

It can be shown that if we were to replace the segment with , the statement will still evaluate to , so we output N since the statement cannot possibly evaluate to .

For the second query, we can replace the segment [1,3] with 
 and the whole statement will evaluate to 
, so we output Y.

For the third query, since [1,5] is the whole statement, we can replace it with anything, so we output Y.

SAMPLE INPUT:

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

SAMPLE OUTPUT:

YNYY

SCORING:

  • Inputs 3-5: N,Q102
  • Inputs 6-8: N,Q103
  • Inputs 9-26: No additional constraints.

来源/分类