Chi phí tối thiểu
Đề bài
Mô tả
Cho một lưới gồm hàng (đánh số từ đến ) và cột (đánh số từ đến ). Ô ở hàng , cột được ký hiệu là . 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 có đúng một chướng ngại vật đặt tại ô .
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ừ ô đến ô 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 đồng để di chuyển một chướng ngại vật từ ô sang ô hoặc (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 đồng để di chuyển một chướng ngại vật từ ô sang ô hoặc (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ừ đến . 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 (): 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 , , (, ): số hàng của lưới và chi phí di chuyển dọc, ngang.
- Dòng thứ hai chứa số nguyên (): 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
- , tổng trên tất cả bộ dữ liệu không vượt quá
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 ở và . Di chuyển chướng ngại vật sang (tốn ), rồi lên (tốn ), tổng . Bộ 2: di chuyển chướng ngại vật xuống , tốn . Bộ 3: di chuyển chướng ngại vật xuống tốn , hoặc sang tốn ; chọn . |
| 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