問題一覧 > 教育的問題

No.2911 位相の公理

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

問題文

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

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

 

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

  1. 数字 11 のみからなる長さ NN の文字列は SS に属す。
  2. SS の任意の要素 s0,s1s_0, s_1 に対し、s0s_0s1s_1 のbit積は SS に属す。
  3. SS の任意の部分集合 SS' に対し、SS' の全ての要素のbit和は SS に属す。

ただし条件3において、SS' の全ての要素のbit和とは、数字 0011 のみからなる長さ NN の一意な文字列 ss であって NN 以下の任意の正整数 nn に対し以下の 22 条件が成り立つもののことです:

  • ss の右から nn 文字目が 11 であるならば、SS' の要素 ss' であって右から nn 文字目が 11 であるものが存在する。
  • ss の右から nn 文字目が 00 であるならば、SS' の要素 ss' であって右から nn 文字目が 11 であるものが存在しない。

 

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

背景

NN 以下の正整数全体の集合を INI_N と置き、各 sSs \in S に対し条件「ss の右から ii 文字目が 11 である」を満たす iINi \in I_N 全体の集合を UsU_s と置き、集合族 {UssS}\{U_s \mid s \in S\}OS\mathcal{O}_S と置くことで、SSINI_N の部分集合の集合族 OS\mathcal{O}_S に翻訳することが出来ます。

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

  1. INI_NOS\mathcal{O}_S に属す。
  2. OS\mathcal{O}_S の任意の要素 U0,U1U_0, U_1 に対し、U0U1U_0 \cap U_1OS\mathcal{O}_S に属す。
  3. OS\mathcal{O}_S の任意の部分集合 U\mathcal{U} に対し、UUU\bigcup_{U \in \mathcal{U}} UOS\mathcal{O}_S に属す。

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

入力

SS の要素を MM 以下の各正整数 mm で番号付けて sms_m と置きます。

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

  • 11 行目に N,MN, M が半角空白区切りで与えられます。
  • MM 以下の各正整数 mm に対し、1+m1 + m 行目に sms_m が与えられます。
NN MM
s1s_1
\vdots
sMs_M

制約

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

  • NN1N161 \leq N \leq 16 を満たす整数
  • MM1Mmin{2N,212}1 \leq M \leq \min \{2^N,2^{12}\} を満たす整数
  • MM 以下の任意の正整数 mm に対し、sms_m は 数字 0011 のみからなる長さ NN の文字列

出力

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

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

サンプル

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

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

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

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

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

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

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

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

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

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

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

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

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