atcoder#ABC189D. [ABC189D] Logical Expression

[ABC189D] Logical Expression

配点 : 400400

問題文

NN 個の文字列 S1,,SNS_1,\ldots,S_N が与えられます。各文字列は AND または OR です。

値が True\text{True} または False\text{False} であるような N+1N+1 個の変数の組 (x0,,xN)(x_0,\ldots,x_N) であって、 以下のような計算を行った際に、yNy_NTrue\text{True} となるようなものの個数を求めてください。

  • y0=x0y_0=x_0
  • i1i\geq 1 のとき、SiS_iAND なら yi=yi1xiy_i=y_{i-1} \land x_iSiS_iOR なら yi=yi1xiy_i=y_{i-1} \lor x_i

aba \land baabb の論理積を表し、aba \lor baabb の論理和を表します。

制約

  • 1N601 \leq N \leq 60
  • SiS_iAND または OR

入力

入力は以下の形式で標準入力から与えられる。

NN

S1S_1

\vdots

SNS_N

出力

答えを出力せよ。

2
AND
OR
5

例えば $(x_0,x_1,x_2)=(\text{True},\text{False},\text{True})$ のとき

  • y0=x0=Truey_0=x_0=\text{True}
  • $y_1=y_0 \land x_1 = \text{True} \land \text{False}=\text{False}$
  • $y_2=y_1 \lor x_2 = \text{False} \lor \text{True}=\text{True}$

となり、y2y_2True\text{True} になります。

y2y_2True\text{True} となるような (x0,x1,x2)(x_0,x_1,x_2) の組み合わせは、

  • (True,True,True)(\text{True},\text{True},\text{True})
  • (True,True,False)(\text{True},\text{True},\text{False})
  • (True,False,True)(\text{True},\text{False},\text{True})
  • (False,True,True)(\text{False},\text{True},\text{True})
  • (False,False,True)(\text{False},\text{False},\text{True})

55 通りで全てです。

5
OR
OR
OR
OR
OR
63

全てが False\text{False} のときを除く 2612^6-1 通りで y5y_5True\text{True} になります。