trang chủ / đề bài / presstack

Chồng quà tặng

Đề bài

Mô tả

Có một chồng gồm n món quà được đánh số phân biệt từ 1 đến n. Món quà trên cùng của chồng mang số a1, món tiếp theo là a2, …, món dưới đáy là an.

Bạn cần gửi đi m món quà phân biệt b1,b2,…,bm, đúng theo thứ tự xuất hiện trong danh sách.

Để gửi một món quà, ta phải nhấc toàn bộ các món nằm phía trên nó ra khỏi chồng, lấy món quà đó, rồi đặt lại tất cả các món vừa nhấc lên trên đỉnh chồng. Nếu có k món nằm phía trên món cần lấy thì thao tác này tốn 2k+1 giây.

Điểm mấu chốt: khi đặt lại các món vừa nhấc lên, ta được sắp xếp lại chúng theo thứ tự tùy ý. Chỉ những món đã được nhấc lên mới có thể đổi chỗ, các món nằm dưới hoàn toàn không bị ảnh hưởng.

Biết trước toàn bộ danh sách b, hãy tính tổng thời gian ít nhất để gửi hết m món quà.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t: số lượng bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm ba dòng:
    • Dòng thứ nhất chứa hai số nguyên n và m.
    • Dòng thứ hai chứa n số nguyên a1,a2,…,an: thứ tự các món quà trong chồng, từ trên xuống dưới.
    • Dòng thứ ba chứa m số nguyên b1,b2,…,bm: danh sách các món quà cần gửi, theo đúng thứ tự.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng tổng thời gian nhỏ nhất (tính bằng giây).

Ràng buộc

  • 1≤t≤100
  • 1≤m≤n≤105
  • 1≤ai≤n, các ai đôi một phân biệt
  • 1≤bi≤n, các bi đôi một phân biệt
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 105
  • Kết quả có thể vượt quá phạm vi số nguyên 32 bit

Ví dụ

Input Output Giải thích
2
3 3
3 1 2
3 2 1
7 2
2 1 7 3 4 5 6
3 1
5
8
Bộ 1: món 3 đang ở trên cùng nên tốn 1 giây. Món 2 nằm ở vị trí 3, phía trên còn 1 món nên tốn 2·1+1=3 giây; khi trả lại ta đặt món 1 lên đỉnh. Nhờ vậy món 1 chỉ tốn 1 giây. Tổng 1+3+1=5.
Bộ 2: món 3 ở vị trí 4, phía trên có 3 món nên tốn 2·3+1=7 giây. Ba món 2,1,7 vừa được nhấc lên, ta đặt món 1 lên đỉnh nên nó chỉ tốn 1 giây. Tổng 7+1=8.
3
1 1
1
1
4 2
4 3 2 1
1 4
5 3
1 2 3 4 5
5 1 3
1
8
11
Bộ 1: chỉ có một món và nó ở trên cùng, tốn 1 giây.
Bộ 2: món 1 nằm dưới đáy (vị trí 4), phía trên có 3 món nên tốn 2·3+1=7 giây; khi trả lại ba món 4,3,2 ta đặt món 4 lên đỉnh, nên món 4 chỉ tốn 1 giây. Tổng 7+1=8.
Bộ 3: món 5 ở đáy tốn 2·4+1=9 giây; sau đó món 1 và món 3 đều đã nằm trong phần vừa được nhấc lên nên mỗi món chỉ tốn 1 giây. Tổng 9+1+1=11.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0