Tenka1 Programmer Contest-D:Crossing(500)
問題
https://beta.atcoder.jp/contests/tenka1-2018/tasks/tenka1_2018_d
整数 が与えられます。
の部分集合の組
であって、以下の条件を満たすものが存在するか判定し、 存在する場合はひとつ構成してください。
のうちどの整数も、
のうちにちょうど
つに含まれる。
のうちどの
つの集合をとっても、それらに共通して含まれる要素はちょうど
つである。
考え方
求めることは、部分集合の組である。部分集合の組の数を とする。例として
となる場合を考えよう。
つ目の条件を求めるべき
つの部分集合に適応すると、
つの部分集合の組と共通の要素の関係は以下のようになる。
部分集合の |
共通の要素 |
---|---|
このとき、集合 は
の要素を持つことになる。同様にして部分集合
に持つべき要素も一意に定まる。
上記の議論により、解をもつ場合の必要条件は が成り立つことである。
について、必要条件が成り立つことを確認し、満たす場合は
Yes
で上記で示した方法で部分集合を構成する。満たさない場合は No
となる。
Submission #3489311 - Tenka1 Programmer Contest
ポイント
- 求める内容から必要条件を整理する。