VÙNG TRÊN LƯỚI

Cho bảng lưới ô vuông kích thước \(n \times m\), các dòng được đánh số từ trên xuống dưới theo thứ tự từ 1 đến \(n\), các cột được đánh số từ trái sang phải theo thứ tự từ 1 đến \(m\), ô nằm giao ở dòng \(i\) cột \(j\) là ô \((i,j)\). Trên mỗi ô \((i,j)\) được gán một số nguyên dương, trong đó ô \((1,1)\) luôn có giá trị là 1.

Một dãy các ô có giá trị giống nhau từ ô \((u,v)\) đến ô \((s,t)\) với hai ô liên tiếp có cạnh chung được gọi là đường đi từ ô \((u,v)\) đến ô \((s,t)\).

Một vùng là tập hợp các ô sao cho hai ô bất kỳ trong vùng đều có đường đi đến nhau và không có đường đi đến các ô vùng khác.

Có thể thay đổi giá trị của tất cả các ô trong một vùng thành số 1 với chi phí được tính bằng tích của giá trị một ô với số lượng ô của vùng đó.

Yêu cầu: Hãy cho biết tổng chi phí nhỏ nhất để thay đổi giá trị của một số vùng trong bảng lưới sao cho từ ô \((1,1)\) có đường đi đến ô \((n,m)\) với tất cả các ô trên đường đi đều có giá trị 1.

Dữ liệu vào: Từ tệp văn bản VLUOI.INP:

  • Dòng đầu tiên ghi lần lượt hai số nguyên dương \(n,\ m\ (1 \leq n,m \leq 1000)\);

  • \(n\) dòng tiếp theo, mỗi dòng ghi \(m\) số nguyên dương cho biết giá trị của các ô trên lưới, trong đó số thứ \(j\ (j = 1..m)\) của dòng thứ \(i\ (i = 1\ldots n)\) là giá trị của ô \((i,j)\), giá trị của các ô là số nguyên dương không vượt quá \(10^{4}\).

Kết quả: Đưa ra tệp văn bản VLUOI.OUT một số nguyên duy nhất là kết quả bài toán.

Ví dụ:

Ví dụ 1 Ví dụ 2
VLUOI.INP VLUOI.OUT VLUOI.INP VLUOI.OUT
4 5
1 1 2 2 2
3 3 2 2 2
1 1 3 3 1
5 2 1 1 1
8 3 3
1 2 3
4 5 6
9 8 7
18

Giải thích: Các số in đậm là các vùng được thay đổi để có kết quả tốt nhất.

Trong ví dụ 1, chi phí để chuyển các vùng về giá trị 1 là:

Vùng các ô \((2,1);(2,2)\) có chi phí \(3 \times 2 = 6\).

Vùng có ô \((4,2)\) có chi phí \(2 \times 1 = 2\)

Do vậy tổng chi phí là \(6 + 2 = 8\)

Ràng buộc:

+ Có 50% số test tương ứng với 50% số điểm các ô chung cạnh có giá trị khác nhau.

+ Có 50% số test còn lại tương ứng 50% số điểm không có ràng buộc gì thêm.

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. sythai (5/8)
  2. npk1605 (5/10)
  3. trungnam (4/4)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]