Chi phí tối thiểu

Đề bài

Mô tả

Cho một lưới gồm n hàng (đánh số từ 1 đến n) và 106+2 cột (đánh số từ 0 đến 106+1). Ô ở hàng i, cột j được ký hiệu là (i,j). Hai ô kề cạnh (chung cạnh) được nối với nhau bằng một cạnh.

Ban đầu, mỗi hàng i có đúng một chướng ngại vật đặt tại ô (i,ai).

Bạn muốn di chuyển một số chướng ngại vật sao cho tồn tại đường đi từ ô (1,0) đến ô (n,106+1) theo các cạnh của lưới mà không đi qua ô chứa chướng ngại vật. Chi phí di chuyển chướng ngại vật như sau:

  • Tốn u đồng để di chuyển một chướng ngại vật từ ô (i,j) sang ô (i1,j) hoặc (i+1,j) (di chuyển dọc), nếu ô đích tồn tại và hiện không chứa chướng ngại vật.
  • Tốn v đồng để di chuyển một chướng ngại vật từ ô (i,j) sang ô (i,j1) hoặc (i,j+1) (di chuyển ngang), nếu ô đích tồn tại và hiện không chứa chướng ngại vật.

Không được di chuyển chướng ngại vật ra ngoài lưới. Hãy tính số đồng ít nhất cần chi để có thể đi từ (1,0) đến (n,106+1). Có thể chứng minh rằng với các ràng buộc của bài toán, luôn tồn tại cách làm cho hành trình khả thi.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (1t104): số bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm hai dòng:
    • Dòng đầu chứa ba số nguyên n, u, v (2n100, 1u,v109): số hàng của lưới và chi phí di chuyển dọc, ngang.
    • Dòng thứ hai chứa n số nguyên a1,a2,,an (1ai106): vị trí cột của chướng ngại vật ở từng hàng.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số nguyên: số đồng ít nhất cần chi.

Ràng buộc

  • 1t104
  • 2n100, tổng n trên tất cả bộ dữ liệu không vượt quá 2·104
  • 1u,v109
  • 1ai106

Ví dụ

Input Output Giải thích
3
2 3 4
2 2
2 3 4
3 2
2 4 3
3 2
7
3
3
Bộ 1: hai chướng ngại vật ở (1,2)(2,2). Di chuyển chướng ngại vật (2,2) sang (2,3) (tốn v=4), rồi lên (1,3) (tốn u=3), tổng 7. Bộ 2: di chuyển chướng ngại vật (1,3) xuống (2,3), tốn u=3. Bộ 3: di chuyển chướng ngại vật (1,3) xuống (2,3) tốn u=4, hoặc sang (1,4) tốn v=3; chọn 3.
1
2 2 1
1 1000000
0 Hai chướng ngại vật ở hai cột cách nhau rất xa, luôn tồn tại đường đi lách qua mà không cần di chuyển gì.

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