No.3208 Parse AND OR Affection
レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 27
作問者 :
amesyu
/ テスター :
noshinn
lmorinn
遭難者
タグ : / 解いたユーザー数 27
作問者 :

問題文最終更新日: 2025-07-18 15:55:34
問題文
以下で定義される長さ $N$ の論理ゲート式 $X$ が与えられます。
$Q$ 個のクエリが与えられるので順に処理してください。$k$ 番目のクエリは以下の通りです。
- 正の奇数 $L_k, R_k$ が与えられる。 $L_k \leq i \leq j \leq R_k$ を満たす整数の組 $(i, j)$ であって $X$ の $i$ から $j$ までの連続部分列が論理ゲート式として解釈可能かつその評価値が
T
であるような個数を求めよ。
論理ゲート式の定義
奇数番目の文字はTF
のいずれかで、偶数番目の文字は+*^
のいずれかであるような奇数長の文字列を論理ゲート式と呼びます。
T
, F
はそれぞれ真, 偽、+*^
はそれぞれ論理和、論理積、排他的論理和を表しています。
ここで,論理和,論理積,排他的論理和の真理値表はそれぞれ以下のようになります。
A | B | A + B (OR) | A * B (AND) | A ^ B (XOR) |
---|---|---|---|---|
T | T | T | T | F |
T | F | T | F | T |
F | T | T | F | T |
F | F | F | F | F |
F+T^T*F
は(((F+T)^T)*F)
と解釈され、その評価値はF
となります。例えば以下の文字列は論理ゲート式です。
T
: 評価値はT
です。F+F*T
: 評価値は((F+F)*T) = (F*T) = F
です。T^F+T^F*T
: 評価値は((((T^F)+T)^F)*T) = T
です。
FFT
C+T+F
+T^T+
^^
制約
- $1 \leq N \leq 252525$
- $N$ は奇数
- $1 \leq Q \leq 10^5$
- $|X| = N$
- $X$ は論理ゲート式として解釈可能
- $1 \leq L_k \leq R_k \leq N$
- $L_k, R_k$ は奇数
入力
$N$ $Q$ $X$ $L_1$ $R_1$ $L_2$ $R_2$ $\vdots$ $L_Q$ $R_Q$
出力
$k$ 行目には $k$ 番目のクエリに対する答えを出力してください。
サンプル
サンプル1
入力
9 4 T^T+F^T*T 3 7 1 9 1 3 5 5
出力
4 10 2 0
1つ目のクエリにおいて、論理ゲート式であるような連続部分列とその評価値は以下の通りです。
T = T
, F = F
, T = T
, T+F = T
, F^T = T
, T+F^T = F
よって評価値がT
であるような個数は $4$ です。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。