QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 512 MB Total points: 100

#2617. Duyệt bộ sưu tập

Statistics

Bạn đang duyệt một bộ sưu tập trực tuyến gồm $n$ vật phẩm được đánh số từ $1$ đến $n$ và xếp thành vòng tròn. Vật phẩm bên phải mỗi vật phẩm $i$ là vật phẩm $i+1$, và vật phẩm bên phải vật phẩm $n$ là vật phẩm $1$. Tương tự, vật phẩm bên trái mỗi vật phẩm $i$ là vật phẩm $i-1$, và vật phẩm bên trái vật phẩm $1$ là vật phẩm $n$.

Các vật phẩm có $m$ tham số được đánh số từ $1$ đến $m$. Giá trị tham số $j$ của vật phẩm $i$ là số nguyên $a_{i,j}$.

Trong khi duyệt, tại mọi thời điểm có một con trỏ trỏ vào một vật phẩm, được gọi là vật phẩm hiện tại.

Ngoài ra, bạn có thể quản lý một tập các điều kiện lọc. Mỗi điều kiện là một cặp $(j,v)$, nghĩa là tham số thứ $j$ của vật phẩm phải bằng $v$. Vật phẩm hiện tại luôn thỏa mãn mọi điều kiện trong tập.

Để duyệt bộ sưu tập, bạn có thể thực hiện các thao tác. Mỗi thao tác phải thuộc một trong bốn loại sau:

  • Nhấn “phải”. Con trỏ di chuyển đến vật phẩm gần nhất bên phải vật phẩm hiện tại thỏa mãn mọi điều kiện lọc. Đặc biệt, nếu vật phẩm hiện tại là vật phẩm duy nhất như vậy, con trỏ không di chuyển.

  • Nhấn “trái”. Tương tự, con trỏ di chuyển đến vật phẩm gần nhất bên trái vật phẩm hiện tại thỏa mãn mọi điều kiện lọc, và đứng yên nếu vật phẩm hiện tại là vật phẩm duy nhất như vậy.

  • Thêm một điều kiện lọc mới $(j,v)$, với các số nguyên $j$ và $v$ nào đó. Nếu vật phẩm hiện tại thỏa mãn điều kiện này, con trỏ không di chuyển. Ngược lại, con trỏ di chuyển đến vật phẩm gần nhất bên phải vật phẩm hiện tại thỏa mãn mọi điều kiện lọc, kể cả điều kiện mới. Nếu không có vật phẩm như vậy, thao tác không hợp lệ và không thể thực hiện.

  • Xóa bất kỳ điều kiện lọc $(j,v)$ nào khỏi tập. Con trỏ không di chuyển.

Với mỗi cặp vật phẩm có thứ tự $(i,j)$, hãy trả lời câu hỏi sau:

  • Nếu bắt đầu duyệt với con trỏ ở vật phẩm $i$ và tập điều kiện lọc rỗng, số thao tác ít nhất cần để chuyển con trỏ đến vật phẩm $j$ là bao nhiêu? Tập điều kiện lọc khi kết thúc có thể tùy ý.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên $n$ và $m$, cho biết số vật phẩm trong bộ sưu tập và số tham số của mỗi vật phẩm ($2\le n\le500$; $1\le m\le5$).

Dòng thứ $i$ trong $n$ dòng tiếp theo chứa $m$ số nguyên $a_{i,1},a_{i,2},\ldots,a_{i,m}$, cho biết các giá trị tham số của vật phẩm $i$ ($1\le a_{i,j}\le n$).

Dữ liệu ra

In ra $n$ dòng, mỗi dòng chứa $n$ số nguyên.

Số nguyên thứ $j$ trên dòng thứ $i$ phải bằng số thao tác ít nhất cần để chuyển con trỏ từ vật phẩm $i$ đến vật phẩm $j$, bắt đầu với tập điều kiện lọc rỗng.

Ví dụ

Dữ liệu vào 1

9 3
5 3 7
5 3 4
5 3 7
5 3 2
5 3 4
5 3 7
2 3 7
5 3 7
2 3 7

Dữ liệu ra 1

0 1 2 1 2 3 1 2 1
1 0 1 1 2 2 1 3 2
2 1 0 1 1 2 1 3 2
3 2 1 0 1 1 1 3 2
3 2 2 1 0 1 1 3 2
3 1 2 1 1 0 1 2 2
2 1 3 1 2 1 0 1 2
2 1 3 1 2 2 1 0 1
1 1 3 1 2 3 2 1 0

Ghi chú

Trong ví dụ, một cách nhanh nhất có thể để chuyển từ vật phẩm 2 đến vật phẩm 5 là:

  • Thêm điều kiện lọc mới $(3,4)$. Vì giá trị tham số 3 của vật phẩm 2 đúng là bằng 4, con trỏ đứng yên ở vật phẩm 2.

  • Nhấn “phải”. Con trỏ di chuyển đến vật phẩm gần nhất bên phải vật phẩm 2 thỏa mãn điều kiện đang có hiệu lực duy nhất $(3,4)$. Đó là vật phẩm 5. (Thay bằng nhấn “trái” cũng được.)

Một cách nhanh nhất có thể để chuyển từ vật phẩm 8 đến vật phẩm 3 là:

  • Thêm điều kiện lọc mới $(3,4)$. Vì vật phẩm 8 không thỏa mãn điều kiện này, con trỏ di chuyển đến vật phẩm gần nhất bên phải vật phẩm 8 có giá trị tham số 3 bằng 4. Đó là vật phẩm 2.

  • Xóa điều kiện lọc $(3,4)$. Con trỏ đứng yên ở vật phẩm 2.

  • Nhấn “phải”. Vì tập không có điều kiện lọc nào, con trỏ di chuyển đến vật phẩm 3.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#3151EditorialOpenNew Editorial for Problem #2617EustiaAstraeaView
#1945EditorialOpenNew Editorial for Problem #2617zrczrczrczrcView

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.