TopCoder

User's AC Ratio

100.0% (2/2)

Submission's AC Ratio

75.0% (3/4)

Tags

Description

給定整數 $n$,考慮全集 $U={1,2,\dots,n}$。

一開始,你選定 $U$ 的一個大小為 $n-2$ 的子集合 $S$。接著你可以進行若干「輪」操作:每一輪,你從 $S$ 中踢掉恰好一個元素,再從目前不在 $S$ 中的元素裡挑一個加入 $S$。每輪過後,$S$ 仍是大小 $n-2$ 的子集合。

你的目標是讓 $S$ 走訪 $U$ 的所有大小為 $n-2$ 的子集合(包含一開始選定的那一個),並使所用的輪數最少。

請輸出最少輪數,並給出一組達到此最少輪數的構造。

Input Format

輸入共一行,包含一個整數 $n$。

  • $2 \leq n \leq 50$

Output Format

本題分成兩段計分。

第一行輸出最少輪數 $R$。

  • 若你只想取得「正確輪數」的分數(本題的 30%),輸出到此為止即可。
  • 若要取得滿分(額外的 70%),請接著輸出一組構造:
    • 第二行:初始集合 $S$ 的 $n-2$ 個元素,以空白分隔(當 $n=2$ 時 $S$ 為空集合,此行為空行)。
    • 接下來 $R$ 行,每行兩個整數 $u\ v$,以一個空格隔開,表示這一輪從 $S$ 中踢掉 $u$、並加入 $v$。其中 $u$ 必須是當下 $S$ 中的元素,$v$ 必須是當下不在 $S$ 中的元素。

你輸出的構造必須滿足:

  1. 每一輪都合法(踢掉的在 $S$ 中、加入的不在 $S$ 中);
  2. 過程中(含初始集合)每一個大小為 $n-2$ 的子集合都恰好被走訪一次。

本題為 special judge,任何滿足上述條件且輪數等於最小值的構造都會被接受。

Sample Input 1

3

Sample Output 1

2
1
1 2
2 3

Sample Input 2

4

Sample Output 2

5
1 3
1 4
3 1
4 2
1 4
4 3

Hints

在範例測試一中,$n=3$,全集為 ${1,2,3}$,大小為 $1$ 的子集合有 ${1}$、${2}$、${3}$ 共 $3$ 個,因此最少輪數為 $R=2$。

範例輸出對應的一種構造為:一開始 $S={1}$;第一輪踢掉 $1$、加入 $2$,得到 ${2}$;第二輪踢掉 $2$、加入 $3$,得到 ${3}$。這樣三個子集合都恰好被走訪一次。

這只是其中一種合法構造;任何輪數同為 $2$ 的構造都會被接受。

在範例測試二中,$n=4$,範例輸出依序經過的集合為 ${1,3}$、${3,4}$、${1,4}$、${1,2}$、${2,4}$、${2,3}$,六個大小為 $2$ 的子集合各被走訪一次。

Problem Source

2026 YTP 國中組初賽 p4

Subtasks

No. Testdata Range Constraints Score
1 0~1 範例測試資料 0
2 0~18 無額外限制 15

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 262144 65536 1 2
1 1000 262144 65536 1 2
2 1000 262144 65536 2
3 1000 262144 65536 2
4 1000 262144 65536 2
5 1000 262144 65536 2
6 1000 262144 65536 2
7 1000 262144 65536 2
8 1000 262144 65536 2
9 1000 262144 65536 2
10 1000 262144 65536 2
11 1000 262144 65536 2
12 1000 262144 65536 2
13 1000 262144 65536 2
14 1000 262144 65536 2
15 1000 262144 65536 2
16 1000 262144 65536 2
17 1000 262144 65536 2
18 1000 262144 65536 2