問題一覧 > 教育的問題

No.2911 位相の公理

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 43
作問者 : 👑 p-adicp-adic / テスター : hiro1729hiro1729
0 ProblemId : 9308 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-10-04 22:04:22

問題文

数字 $0$ と $1$ のみからなる文字列をbit列と呼びます。

入力に $2$ 個の正整数 $N, M$ と、長さ $N$ のbit列のみからなる要素数 $M$ の集合 $S$ が与えられます。

 

$S$ が良いbit列集合であるとは、以下の $3$ 条件を全て満たすということです:

  1. 数字 $1$ のみからなる長さ $N$ の文字列は $S$ に属す。
  2. $S$ の任意の要素 $s_0, s_1$ に対し、$s_0$ と $s_1$ のbit積は $S$ に属す。
  3. $S$ の任意の部分集合 $S'$ に対し、$S'$ の全ての要素のbit和は $S$ に属す。

ただし条件3において、$S'$ の全ての要素のbit和とは、数字 $0$ と $1$ のみからなる長さ $N$ の一意な文字列 $s$ であって $N$ 以下の任意の正整数 $n$ に対し以下の $2$ 条件が成り立つもののことです:

  • $s$ の右から $n$ 文字目が $1$ であるならば、$S'$ の要素 $s'$ であって右から $n$ 文字目が $1$ であるものが存在する。
  • $s$ の右から $n$ 文字目が $0$ であるならば、$S'$ の要素 $s'$ であって右から $n$ 文字目が $1$ であるものが存在しない。

 

$S$ が良いbit列集合であるか否かを判定してください。

背景

$N$ 以下の正整数全体の集合を $I_N$ と置き、各 $s \in S$ に対し条件「$s$ の右から $i$ 文字目が $1$ である」を満たす $i \in I_N$ 全体の集合を $U_s$ と置き、集合族 $\{U_s \mid s \in S\}$ を $\mathcal{O}_S$ と置くことで、$S$ を $I_N$ の部分集合の集合族 $\mathcal{O}_S$ に翻訳することが出来ます。

近代集合論で幾何学を定式化する際にはしばしば位相空間という概念が使われます。組 $(I_N,\mathcal{O}_S)$ が位相空間である必要十分条件は、以下の $3$ 条件を全て満たすということです:

  1. $I_N$ が $\mathcal{O}_S$ に属す。
  2. $\mathcal{O}_S$ の任意の要素 $U_0, U_1$ に対し、$U_0 \cap U_1$ は $\mathcal{O}_S$ に属す。
  3. $\mathcal{O}_S$ の任意の部分集合 $\mathcal{U}$ に対し、$\bigcup_{U \in \mathcal{U}} U$ は $\mathcal{O}_S$ に属す。

従って定義から、この条件は $S$ が良いbit列集合であるということと同値です。つまり今回は、$(I_N,\mathcal{O}_S)$ が位相空間であるか否かを判定する問題と等価です。

入力

$S$ の要素を $M$ 以下の各正整数 $m$ で番号付けて $s_m$ と置きます。

この時、入力は次の形式で標準入力から $1 + M$ 行で与えられます:

  • $1$ 行目に $N, M$ が半角空白区切りで与えられます。
  • $M$ 以下の各正整数 $m$ に対し、$1 + m$ 行目に $s_m$ が与えられます。
$N$ $M$
$s_1$
$\vdots$
$s_M$

制約

入力は以下の制約を満たします:

  • $N$ は $1 \leq N \leq 16$ を満たす整数
  • $M$ は $1 \leq M \leq \min \{2^N,2^{12}\}$ を満たす整数
  • $M$ 以下の任意の正整数 $m$ に対し、$s_m$ は 数字 $0$ と $1$ のみからなる長さ $N$ の文字列

出力

$S$ が良いbit列集合である場合はYesと、そうでない場合はNoと出力してください。

最後に改行してください。

サンプル

サンプル1
入力
1 1
0
出力
No

$S = \{0\}$ は条件1を満たしません。実際、$S$ は $0$ 以外に要素を持たず、文字列 $0$ は 数字 $1$ のみからなる文字列ではありません。

また $(I_N,\mathcal{O}_S) = (\{1\},\{\{\}\})$ です。$I_N \notin \mathcal{O}_S$ であるので、$(I_N,\mathcal{O}_S)$ は位相空間ではありません。

サンプル2
入力
1 1
1
出力
No

$S = \{1\}$ は条件3を満たしません。実際、$S$ の部分集合 $S'$ を空集合と定めると、そのbit和は $0$ となりますが $0$ は $S$ に属しません。

また $(I_N,\mathcal{O}_S) = (\{1\},\{\{1\}\})$ です。$\mathcal{U} := \{\}$ と置くと $\mathcal{U} \subset \mathcal{O}_S$ ですが $\bigcup_{U \in \{\}} U = \{\} \notin \mathcal{O}_S$ であるので、$(I_N,\mathcal{O}_S)$ は位相空間ではありません。

サンプル3
入力
1 2
0
1
出力
Yes

$S = \{0,1\}$ は条件1,2,3を全て満たすので、良いbit列集合です。

また $(I_N,\mathcal{O}_S) = (\{1\},\{\{\},\{1\}\})$ です。位相空間を知っている人向けに言うと、$(I_N,\mathcal{O}_S)$ は離散位相空間かつ密着位相空間となります。代数幾何を知っている人向けに言うと、$(I_N,\mathcal{O}_S)$ は $p$ 進数体 $\mathbb{Q}_p$ に付随するアフィンスキーム $\textrm{Spec}(\mathbb{Q}_p)$ と同相な位相空間となります。

サンプル4
入力
3 4
000
011
110
111
出力
No

$S = \{000,011,110,111\}$ は条件2を満たしません。実際、$011$ と $110$ は $S$ の要素ですが、そのbit積 $010$ は $S$ に属しません。

また $(I_N,\mathcal{O}_S) = (\{1,2,3\},\{\{\},\{2,3\},\{1,2\},\{1,2,3\}\})$ です。$\{2,3\}$ と $\{1,2\}$ は $\mathcal{O}_S$ の要素ですが、$\{2,3\} \cap \{1,2\} = \{1\} \notin \mathcal{O}_S$ であるので、$(I_N,\mathcal{O}_S)$ は位相空間ではありません。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。