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