AT_tenka1_2018_d Crossing
题目描述
给定一个整数 $N$。请判断是否存在一组 $\{1,2,\ldots,N\}$ 的子集组 $(S_1, S_2, \ldots, S_k)$,满足以下条件,并在存在时构造出这样的一组。
- 对于 $1,2,\ldots,N$ 中的每个整数,恰好属于 $S_1, S_2, \ldots, S_k$ 中的两个集合。
- 对于 $S_1, S_2, \ldots, S_k$ 中任意两个集合,它们的交集恰好包含一个元素。
输入格式
输入通过标准输入给出,格式如下:
> $N$
输出格式
如果不存在满足条件的子集组,输出 `No`。如果存在,先输出 `Yes`,然后按照如下格式输出子集的信息。设 $S_i = \{S_{i,1}, S_{i,2}, \ldots, S_{i,|S_i|}\}$。
如果有多组满足条件的答案,输出任意一组均可。
> $k$
> $|S_1|$ $S_{1,1}$ $S_{1,2}$ $\ldots$ $S_{1,|S_1|}$
> $|S_2|$ $S_{2,1}$ $S_{2,2}$ $\ldots$ $S_{2,|S_2|}$
> $\vdots$
> $|S_k|$ $S_{k,1}$ $S_{k,2}$ $\ldots$ $S_{k,|S_k|}$
说明/提示
### 限制
- $1 \leq N \leq 10^5$
- $N$ 是整数
### 样例解释 1
取 $(S_1, S_2, S_3) = (\{1,2\}, \{3,1\}, \{2,3\})$,可以验证满足条件。
由 ChatGPT 4.1 翻译