trang chủ / bài tập / mergtower

Gộp Tháp

Đề bài

Mô tả

Bạn có n chiếc đĩa, đĩa thứ i có bán kính i. Ban đầu các đĩa này được chia vào m tháp: mỗi tháp chứa ít nhất một đĩa, và các đĩa trong mỗi tháp được xếp theo thứ tự bán kính giảm dần từ dưới lên trên.

Bạn muốn gộp tất cả các đĩa lại thành một tháp duy nhất. Để làm điều đó, bạn có thể chọn hai tháp khác nhau ij (mỗi tháp chứa ít nhất một đĩa), lấy một số (có thể là tất cả) đĩa trên cùng của tháp i và đặt lên trên tháp j theo đúng thứ tự, với điều kiện đĩa trên cùng của tháp j phải lớn hơn tất cả các đĩa được di chuyển. Bạn có thể thực hiện thao tác này bao nhiêu lần tùy ý.

Gọi độ khó của một tập các tháp là số thao tác tối thiểu cần thực hiện để gộp tất cả các đĩa lại thành một tháp duy nhất.

Bạn được cho m1 truy vấn. Mỗi truy vấn gồm hai số aibi, nghĩa là "gộp tháp ai và tháp bi" (lấy tất cả đĩa của hai tháp này và tạo thành một tháp mới chứa tất cả chúng, xếp theo thứ tự bán kính giảm dần từ trên xuống dưới). Tháp kết quả nhận chỉ số ai.

Với mỗi k[0,m1], hãy tính độ khó của tập các tháp sau khi thực hiện k truy vấn đầu tiên.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số đĩa và số tháp.
  • Dòng thứ hai chứa n số nguyên t1,t2,,tn, trong đó ti là chỉ số tháp mà đĩa i thuộc về. Mỗi giá trị từ 1 đến m xuất hiện ít nhất một lần.
  • m1 dòng tiếp theo, mỗi dòng chứa hai số nguyên aibi mô tả một truy vấn. Các giá trị ai,bi được chọn sao cho hai tháp này tồn tại trước truy vấn thứ i.

Dữ liệu ra

In ra m số nguyên. Số thứ k (đánh chỉ số từ 0) là độ khó của tập các tháp sau khi thực hiện k truy vấn đầu tiên.

Ràng buộc

  • 2mn2·105
  • 1tim, mỗi giá trị từ 1 đến m xuất hiện ít nhất một lần.
  • 1ai,bim, aibi.

Ví dụ

Input Output Giải thích
7 4
1 2 3 3 1 4 3
3 1
2 3
2 4
5
4
2
0
Các tháp ban đầu: [[5,1],[2],[7,4,3],[6]], độ khó 5.
Sau truy vấn 1: [[2],[7,5,4,3,1],[6]], độ khó 4.
Sau truy vấn 2: [[7,5,4,3,2,1],[6]], độ khó 2.
Sau truy vấn 3: chỉ còn một tháp, độ khó 0.
2 2
1 2
2 1
1
0
Ban đầu hai đĩa ở hai tháp, cần 1 thao tác. Sau khi gộp còn một tháp, độ khó 0.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0