No.2535 多重同値
タグ : / 解いたユーザー数 81
作問者 : 👑 p-adic / テスター : kumakuma hiro1729
問題文
ここでは命題変数と言ったら $P$ に正整数の添字をつけた文字列を表します。例えば $P_1$ は命題変数ですが、$P$ や $Q_2$ は命題変数ではありません。
$1 \leq \ell \leq r$ を満たす各整数 $\ell, r$ に対し、命題 $X(\ell,r)$ を次の再帰式で定めます:
$\displaystyle X(\ell,r) = \left\{ \begin{array}{ll} \displaystyle P_{\ell} &\displaystyle (\ell = r) \\ \displaystyle P_{\ell} \Leftrightarrow X(\ell+1,r) &\displaystyle (\ell < r) \end{array} \right. $
ただし $\Leftrightarrow$ は同値であることを表す論理演算子であり、命題 $a$ と $b$ に対する $a \Leftrightarrow b$ は「$a$ ならば $b$、かつ $b$ ならば $a$」と定義されます。
上の再帰式は要するに $\Leftrightarrow$ を右から結合していくことで新たな命題を構成しています。
例えば $X(3,4)$ は命題 $P_3 \Leftrightarrow P_4$ であり、$X(2,4)$ は $P_2 \Leftrightarrow X(3,4)$ すなわち $P_2 \Leftrightarrow (P_3 \Leftrightarrow P_4)$ となります。
入力に正整数 $N$ と、$N$ 以下の各正整数 $i$ に対する $P_i$ の真理値割り当てが与えられます。
命題変数の真理値割り当てについて知らない人向けの説明はこちらです。(クリックで開く)
$N$ 以下の各正整数 $i$ に対する $P_i$ の真理値割り当てとは、大雑把には各正整数 $i$ に対し $P_i$ が真であるか偽であるかを決める対応のことです。
より形式的には $N$ 以下の正整数全体の集合から $\{0,1\}$ への写像のことですが、その定式化に納得できる人はこの補足が不要なので大雑把な説明に留めます。
入力に与えられた真理値割り当てのもとで $N$ 以下の各正整数 $r$ に対する命題 $X(1,r)$ の真偽を求めてください。
入力
入力は以下の形式で標準入力から $1+N$ 行で与えられます:
- $1$ 行目に $N$ が与えられます。
- $N$ 以下の各正整数 $i$ に対し、$P_i$ に真が割り当てられているならば
Yes
が、$P_i$ に偽が割り当てられているならばNo
が $1+i$ 行目に与えられます。
$N$ $P_1$ の真偽(Yes/No) $\vdots$ $P_N$ の真偽(Yes/No)
制約
入力は以下の制約を満たします:
- $N$ は $1 \leq N \leq 10^5$ を満たす整数である。
出力
$N$ 以下の各正整数 $r$ に対し、入力に与えられた真理値割り当てのもとで $X(1,r)$ が真ならばYes
と、偽ならばNo
と $r$ 行目に出力してください。
最後に改行してください。
サンプル
サンプル1
入力
1 Yes
出力
Yes
$X(1,1)$ は $P_1$ であり、$P_1$ は真です。
サンプル2
入力
2 No Yes
出力
No No
$X(1,1)$ は $P_1$ であり、$P_1$ は偽です。
$X(1,2)$ は $P_1 \Leftrightarrow X(2,2)$ であり、$X(2,2)$ は $P_2$ です。$P_2$ は真なので $P_1 \Leftrightarrow X(2,2)$ の真偽は $P_1$ の真偽と一致しますが、$P_1$ は偽なので $X(1,2)$ は偽です。
サンプル3
入力
2 Yes No
出力
Yes No
$X(1,1)$ は $P_1$ であり、$P_1$ は真です。
$X(1,2)$ は $P_1 \Leftrightarrow X(2,2)$ であり、$X(2,2)$ は $P_2$ です。$P_2$ は偽なので $P_1 \Leftrightarrow X(2,2)$ の真偽は $P_1$ の否定の真偽と一致しますが、$P_1$ は真なので $X(1,2)$ は偽です。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。