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

Máng trượt nước

Đề bài

Mô tả

n cây cột xếp thành một hàng, cột thứ i có chiều cao ai. Ta muốn biến dãy chiều cao thành một dãy không giảm (tức aiai+1 với mọi i).

Trong một thao tác, ta chọn một đoạn con liên tiếp các cột mà chiều cao của chúng đang không giảm, rồi tăng chiều cao của mỗi cột trong đoạn đó lên 1.

Hãy tìm số thao tác ít nhất cần thực hiện để dãy chiều cao trở thành không giảm.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ test.
  • Với mỗi bộ test:
    • Dòng đầu chứa số nguyên n là số cột.
    • Dòng thứ hai chứa n số nguyên a1,a2,,an là chiều cao các cột.

Dữ liệu ra

Với mỗi bộ test, in ra một số nguyên là số thao tác ít nhất cần thực hiện.

Ràng buộc

  • 1t100
  • 1n2·105
  • 0ai109
  • Tổng n trên tất cả các bộ test không vượt quá 2·105.

Ví dụ

Input Output Giải thích
3
4
5 3 2 5
5
1 2 3 5 3
3
1 1 1
3
2
0
Bộ 1: [5,3,2,5] → [5,3,3,5] → [5,4,4,5] → [5,5,5,5], cần 3 thao tác. Bộ 3: dãy đã không giảm nên cần 0 thao tác.
2
2
1 3
2
3 1
0
2
Bộ 1: dãy 1 3 đã không giảm. Bộ 2: cần nâng cột thứ hai từ 1 lên 3, tốn 2 thao tác.

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