QOJ.ac

QOJ

시간 제한: 3 s 메모리 제한: 32 MB 총점: 100

#16022. 足球联赛

통계

在一个足球联赛中共有 $n$ 支球队(我们假设 $n$ 是偶数)。在整个赛季中,每支球队都必须与其他所有球队恰好比赛一次。整个赛季由 $n - 1$ 轮组成。在每一轮中,每支球队都恰好参加一场比赛。

我们希望每支球队在连续的比赛中能在不同的球场进行:即一场在主场,下一场在客场,以此类推。不幸的是,并不总是能够构造出这样一个赛程表,使得没有任何球队连续两场在主场比赛,或者连续两场在客场比赛。在设计赛程时,应尽量减少这种情况发生的次数。(例如,如果一支球队先打了一场客场,然后连续打四场主场,最后打一场客场,这算作发生了三次这种情况。)

你的任务是最小化所有球队在主场或客场连续比赛的“情况”总数,并构造出整个赛季的赛程表。

赛程表应由 $n - 1$ 轮组成。每一轮包含 $\frac{n}{2}$ 场比赛——每支球队恰好参加一场比赛。整个赛季共有 $\frac{n(n-1)}{2}$ 场比赛,且任意两支球队之间恰好比赛一次。每场比赛在其中一个对手的主场进行——其中一支球队在主场比赛,另一支在客场比赛。必须使所有球队连续两场在主场或连续两场在客场比赛的情况总数达到最小。

任务

编写一个程序:

  • 从标准输入读取球队数量。
  • 计算所有球队连续两场在主场或客场比赛的最小情况总数,并构造赛程表。
  • 将结果写入标准输出。

输入格式

输入的第一行也是唯一的一行包含一个偶数 $n$ ($2 \le n \le 1000$) —— 球队的数量。

输出格式

输出的第一行应包含一个整数 —— 所有球队连续两场在主场或客场比赛的最小情况总数。

接下来的 $n - 1$ 行应包含赛程表:第 $k + 1$ 行应包含第 $k$ 轮的描述。

一轮的描述由 $n$ 个不同的数字 $d_1, d_2, \dots, d_n$ 组成,这些数字来自集合 $\{1, 2, \dots, n\}$,彼此之间用单个空格分隔。对于 $i = 1, 2, \dots, \frac{n}{2}$,数对 $d_{2i-1}, d_{2i}$ 表示球队 $d_{2i-1}$ 与 $d_{2i}$ 之间的一场比赛。其中球队 $d_{2i-1}$ 在主场比赛,球队 $d_{2i}$ 在客场比赛。

样例

输入样例 1

4

输出样例 1

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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.