QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 256 MB 總分: 100

#962. Cảm ơn MikeMirzayanov

统计

Bạn được cho một bộ bài gồm $n$ lá bài được đánh số từ $1$ đến $n$ (không nhất thiết theo thứ tự này trong bộ bài). Bạn cần sắp xếp bộ bài bằng cách lặp lại thao tác sau đây.

Chọn $2 \le k \le n$ và chia bộ bài thành $k$ phần liên tiếp không rỗng $D_1, D_2, \dots, D_k$ ($D_1$ chứa $|D_1|$ lá bài đầu tiên của bộ bài, $D_2$ chứa $|D_2|$ lá bài tiếp theo, và cứ như vậy). Sau đó, đảo ngược thứ tự của các phần này, biến đổi bộ bài thành $D_k, D_{k-1}, \dots, D_2, D_1$ (nghĩa là $|D_k|$ lá bài đầu tiên của bộ bài mới là $D_k$, $|D_{k-1}|$ lá bài tiếp theo là $D_{k-1}$, và cứ như vậy). Thứ tự bên trong của mỗi nhóm lá bài $D_i$ không thay đổi sau thao tác.

Bạn cần thu được một bộ bài đã sắp xếp (tức là bộ bài có lá bài đầu tiên là $1$, lá bài thứ hai là $2$, v.v.) bằng cách thực hiện tối đa $120$ thao tác. Có thể chứng minh rằng luôn luôn có thể sắp xếp bộ bài bằng cách thực hiện tối đa $120$ thao tác với các giới hạn của bài toán này.

Ví dụ về thao tác: dưới đây là ba ví dụ về các thao tác hợp lệ (trên ba bộ bài với kích thước khác nhau).

  • Nếu bộ bài là $[3\ 6\ 2\ 1\ 4\ 5\ 7]$ (với $3$ là lá bài đầu tiên và $7$ là lá bài cuối cùng), chúng ta có thể áp dụng thao tác với $k = 4$ và $D_1 = [3\ 6]$, $D_2 = [2\ 1\ 4]$, $D_3 = [5]$, $D_4 = [7]$. Khi đó, bộ bài trở thành $[7\ 5\ 2\ 1\ 4\ 3\ 6]$.
  • Nếu bộ bài là $[3\ 1\ 2]$, chúng ta có thể áp dụng thao tác với $k = 3$ và $D_1 = [3]$, $D_2 = [1]$, $D_3 = [2]$. Khi đó, bộ bài trở thành $[2\ 1\ 3]$.
  • Nếu bộ bài là $[5\ 1\ 2\ 4\ 3\ 6]$, chúng ta có thể áp dụng thao tác với $k = 2$ và $D_1 = [5\ 1]$, $D_2 = [2\ 4\ 3\ 6]$. Khi đó, bộ bài trở thành $[2\ 4\ 3\ 6\ 5\ 1]$.

Dữ liệu vào

Dòng đầu tiên của dữ liệu vào chứa một số nguyên $n$ ($1 \le n \le 20\,000$) — số lượng lá bài trong bộ bài. Dòng thứ hai chứa $n$ số nguyên $c_1, c_2, \dots, c_n$ — các lá bài trong bộ bài. Lá bài đầu tiên là $c_1$, lá bài thứ hai là $c_2$, và cứ như vậy.

Đảm bảo rằng với mọi $i \in \{1, \dots, n\}$, tồn tại duy nhất một $j \in \{1, \dots, n\}$ sao cho $c_j = i$.

Dữ liệu ra

Trên dòng đầu tiên, in ra số lượng thao tác $q$ mà bạn thực hiện ($0 \le q \le 120$). Sau đó, in ra $q$ dòng, mỗi dòng mô tả một thao tác. Để mô tả một thao tác, in trên một dòng số nguyên $k$ là số phần bạn chia bộ bài, theo sau là kích thước của $k$ phần đó: $|D_1|, |D_2|, \dots, |D_k|$.

Phải thỏa mãn $2 \le k \le n$, $|D_i| \ge 1$ với mọi $i = 1, \dots, k$, và $|D_1| + |D_2| + \dots + |D_k| = n$.

Có thể chứng minh rằng luôn luôn có thể sắp xếp bộ bài bằng cách thực hiện tối đa $120$ thao tác với các giới hạn của bài toán này. Nếu có nhiều cách để sắp xếp bộ bài, bạn có thể in ra bất kỳ cách nào. Lưu ý rằng bạn không cần phải tối thiểu hóa $q$.

Ví dụ

Ví dụ 1

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

Ví dụ 2

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

Ví dụ 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.