trang chủ / đề bài / 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>⋯>pn≥1). 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 x−1 đả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 x−1 hoặc x−2 là an toàn, còn rơi tới x−3 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 h và n.
    • 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

  • 1≤q≤100
  • 1≤h≤109
  • 1≤n≤min(h,2·105)
  • h=p1>p2>⋯>pn≥1
  • 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.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