QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100
Statistics

你擁有一副包含 $n$ 張牌的牌組,牌上的數字從 $1$ 到 $n$(牌組中的順序不一定)。你必須透過重複執行以下操作來將牌組排序。

選擇 $2 \le k \le n$,並將牌組分割成 $k$ 個非空的連續部分 $D_1, D_2, \dots, D_k$($D_1$ 包含牌組的前 $|D_1|$ 張牌,$D_2$ 包含接下來的 $|D_2|$ 張牌,以此類推)。接著將這些部分的順序反轉,將牌組變為 $D_k, D_{k-1}, \dots, D_2, D_1$(因此,新牌組的前 $|D_k|$ 張牌為 $D_k$,接下來的 $|D_{k-1}|$ 張牌為 $D_{k-1}$,以此類推)。每個牌組部分 $D_i$ 內部的牌序在操作中保持不變。

你必須在最多 $120$ 次操作內獲得一副已排序的牌組(即第一張牌為 $1$,第二張牌為 $2$,以此類推)。可以證明,在題目限制下,總是可以透過最多 $120$ 次操作將牌組排序。

操作範例:以下是三個有效操作的範例(針對三副不同大小的牌組)。

  • 如果牌組為 $[3\ 6\ 2\ 1\ 4\ 5\ 7]$($3$ 是第一張,$7$ 是最後一張),我們可以執行 $k=4$ 的操作,其中 $D_1=[3\ 6]$,$D_2=[2\ 1\ 4]$,$D_3=[5]$,$D_4=[7]$。執行後,牌組變為 $[7\ 5\ 2\ 1\ 4\ 3\ 6]$。
  • 如果牌組為 $[3\ 1\ 2]$,我們可以執行 $k=3$ 的操作,其中 $D_1=[3]$,$D_2=[1]$,$D_3=[2]$。執行後,牌組變為 $[2\ 1\ 3]$。
  • 如果牌組為 $[5\ 1\ 2\ 4\ 3\ 6]$,我們可以執行 $k=2$ 的操作,其中 $D_1=[5\ 1]$,$D_2=[2\ 4\ 3\ 6]$。執行後,牌組變為 $[2\ 4\ 3\ 6\ 5\ 1]$。

輸入格式

第一行包含一個整數 $n$ ($1 \le n \le 20\,000$),代表牌組中的牌數。 第二行包含 $n$ 個整數 $c_1, c_2, \dots, c_n$,代表牌組中的牌。第一張牌為 $c_1$,第二張為 $c_2$,以此類推。 保證對於所有 $i = 1, \dots, n$,恰好存在一個 $j \in \{1, \dots, n\}$ 使得 $c_j = i$。

輸出格式

在第一行,輸出你執行的操作次數 $q$(必須滿足 $0 \le q \le 120$)。 接著輸出 $q$ 行,每行描述一次操作。 描述一次操作時,請在單行內輸出你將牌組分割成的部分數量 $k$,接著輸出這 $k$ 個部分的長度:$|D_1|, |D_2|, \dots, |D_k|$。 必須滿足 $2 \le k \le n$,且對於所有 $i = 1, \dots, k$ 皆有 $|D_i| \ge 1$,且 $|D_1| + |D_2| + \dots + |D_k| = n$。 可以證明在題目限制下,總是可以透過最多 $120$ 次操作將牌組排序。若有多種排序方式,你可以輸出其中任何一種。 注意,你不必最小化 $q$。

範例

範例 1

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

範例 2

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

範例 3

1
1
0

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#613Editorial Open集训队作业 解题报告 by 王一策Qingyu2026-01-02 23:10:06 Download
#592Editorial Open集训队作业 解题报告 by 孙梓航Qingyu2026-01-02 22:41:14 Download
#322EditorialOpen题解jiangly2025-12-14 07:04:55View

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.