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

Trò chơi miễn phí

Đề bài

Mô tả

Một vách đá cao h đơn vị. Trên mỗi độ cao x từ 1 tới h có đúng một bục di động, đang ở trạng thái ẩn (ở bên trong vách) hoặc đẩy ra (nhô ra ngoài). Ban đầu có n bục đang đẩy ra ở các độ cao p1,p2,,pn (với h=p1>p2>>pn1). Nhân vật đang đứng trên bục ở độ cao h.

Nếu nhân vật đang đứng ở độ cao x (bục x đang đẩy ra), nó có thể kéo cần gạt: bục x sẽ chuyển sang trạng thái ẩn, đồng thời bục ở độ cao x1 đảo trạng thái (đẩy ra ẩn hoặc ẩn đẩy ra). Đây là cách duy nhất để di chuyển giữa các bục.

Nhân vật rất mỏng manh: nó chỉ sống sót khi rơi tối đa 2 đơn vị. Tức là rơi từ x xuống bục x1 hoặc x2 là an toàn, còn rơi tới x3 trở xuống (mà chưa được bục nào đỡ) là chết.

Nhân vật có thể mua các viên pha lê ma thuật. Mỗi viên cho phép đảo trạng thái của một bục bất kỳ, trừ bục ở độ cao h. Mỗi viên chỉ dùng được một lần.

Hỏi số viên pha lê tối thiểu cần mua để nhân vật đáp xuống mặt đất (độ cao 0) an toàn.

Dữ liệu vào

  • Dòng đầu chứa số nguyên q — số truy vấn.
  • Mỗi truy vấn gồm hai dòng:
    • Dòng thứ nhất chứa hai số nguyên hn.
    • Dòng thứ hai chứa n số nguyên p1,p2,,pn theo thứ tự giảm dần.

Dữ liệu ra

Với mỗi truy vấn, in ra một số nguyên — số viên pha lê tối thiểu cần dùng.

Ràng buộc

  • 1q100
  • 1h109
  • 1nmin(h,2·105)
  • h=p1>p2>>pn1
  • Tổng n trên tất cả các truy vấn không vượt quá 2·105.

Ví dụ

Input Output Giải thích
4
3 2
3 1
8 6
8 7 6 5 3 2
9 6
9 8 5 4 3 1
1 1
1
0
1
2
0
Truy vấn 1: kéo cần gạt ở 3 — bục 3 ẩn, bục 2 chuyển từ ẩn thành đẩy ra. Rơi xuống và đáp ở 2. Từ 2 kéo cần — bục 2 ẩn, bục 1 chuyển từ đẩy ra thành ẩn. Rơi xuống mặt đất an toàn (rơi 2 đơn vị). Không cần pha lê.
Truy vấn 4: từ độ cao 1 kéo cần — bục 1 ẩn, bục 0 (mặt đất) coi như đẩy ra. Đáp xuống mặt đất an toàn.

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 1.26.3 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