天下一プログラマーコンテスト 2018 D - Crossing
集合がk個ある時、S1∩S2,...,S1∩Skはそれぞれ異なっていなければならないので、∣S1∣≥k−1である。また∣S1∣≥kと仮定すると、S1はS1∩S2,...,S1∩Skに含まれない整数を少なくとも1つ含むことになり、それをpとするとpは問題文の条件1によりS2,...,Skのいずれかに含まれることになって条件2に反する。従って、∣S1∣=k−1である。同じことが任意のSiについて成り立つ: ∣Si∣=k−1。
ところで、条件1によりk(k−1)=∣S1∣+...+∣Sk∣=2Nでなければならないので、k2−k−2N=0。したがってk=(1+1+8N)/2。
これが整数であることが必要条件である。逆に、整数であれば適当に構成すればつじつまが合うはず。