JOI 2018 - Deforestation

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1700 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Vương quốc JOI có một khu rừng rộng lớn hình chữ nhật, được chia thành lưới gồm \(H\) hàng theo hướng bắc - nam và \(W\) cột theo hướng đông - tây. Ô ở hàng thứ \(i\) tính từ phía bắc, cột thứ \(j\) tính từ phía tây có \(A_{i,j}\) cây, với \(1 \le i \le H\), \(1 \le j \le W\). Riêng ô ở góc tây bắc có một nhà máy chế biến gỗ và không có cây, tức là \(A_{1,1}=0\).

Chỉ có thể đi vào những ô không có cây. Từ một ô, người ta có thể đi sang ô kề theo hướng đông, tây, nam hoặc bắc nếu ô đó không có cây. Không được đi ra ngoài khu rừng. Là một công trình công cộng của vương quốc, JOI muốn chặt cây để có thể đi lại giữa ô ở góc tây bắc và ô ở góc đông nam.

Ban đầu, JOI đứng ở ô góc tây bắc, nơi có nhà máy chế biến gỗ. JOI có thể đi sang một ô kề theo một trong bốn hướng nếu ô đó không có cây, mất \(1\) phút. JOI cũng có thể đứng tại ô hiện tại và chặt một cây trong một ô kề theo một trong bốn hướng, mất \(1\) phút.

Sau mỗi lần chặt một cây, JOI phải mang cây vừa chặt về nhà máy ở ô góc tây bắc. Tốc độ di chuyển không thay đổi khi mang cây, nhưng trong lúc mang cây, JOI không thể chặt cây khác.

Hãy tìm thời gian ít nhất để chặt cây sao cho hai ô góc tây bắc và đông nam có thể đi lại được với nhau. Thời gian được tính đến khi JOI đã mang cây cuối cùng được chặt về nhà máy.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên \(H,W\).
  • Trong \(H\) dòng tiếp theo, dòng thứ \(i\) chứa \(W\) số nguyên \(A_{i,1},A_{i,2},\ldots,A_{i,W}\).

Dữ liệu ra

In ra trên một dòng thời gian ít nhất, tính bằng phút, để thực hiện yêu cầu.

Ràng buộc

  • \(1 \le H \le 30\).
  • \(1 \le W \le 30\).
  • \((H,W) \ne (1,1)\).
  • \(0 \le A_{i,j} \le 10000\) với mọi \(1 \le i \le H\), \(1 \le j \le W\).
  • \(A_{1,1}=0\).

Phân nhóm

  1. Nhóm 1 (15 điểm): \(1 \le H \le 5\)\(1 \le W \le 5\).
  2. Nhóm 2 (28 điểm): \(A_{i,j} \le A_{i,j+1}\) với mọi \(1 \le i \le H\), \(1 \le j \le W-1\); đồng thời \(A_{i,j} \le A_{i+1,j}\) với mọi \(1 \le i \le H-1\), \(1 \le j \le W\).
  3. Nhóm 3 (57 điểm): Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
2 3
0 1 2
3 4 5
Output
32
Giải thích

Ký hiệu ô ở hàng thứ \(i\) tính từ phía bắc, cột thứ \(j\) tính từ phía tây là \((i,j)\).

Trước tiên, chặt cây ở \((1,2)\), mất \(1\) phút.

Tiếp theo, chặt hết cây ở \((1,3)\). Để chặt một cây, từ \((1,1)\) đi sang phía đông một ô, chặt một cây ở \((1,3)\), rồi đi sang phía tây một ô để trở về \((1,1)\). Mỗi cây mất \(3\) phút, nên bước này mất \(2 \times 3=6\) phút.

Sau đó, chặt hết cây ở \((2,3)\). Để chặt một cây, từ \((1,1)\) đi sang phía đông hai ô, chặt một cây ở \((2,3)\), rồi đi sang phía tây hai ô để trở về \((1,1)\). Mỗi cây mất \(5\) phút, nên bước này mất \(5 \times 5=25\) phút.

Tổng thời gian là \(1+6+25=32\) phút. Không thể đáp ứng yêu cầu trong thời gian ngắn hơn, nên in ra \(32\).

Ví dụ 2

Input
2 5
0 5 0 0 0
0 0 0 9 1
Output
13
Giải thích

Chỉ cần chặt cây ở ô \((2,5)\).

Ví dụ 3

Input
2 5
0 2 0 0 0
0 0 0 9 1
Output
11
Giải thích

Trước tiên chặt cây ở ô \((1,2)\), sau đó chặt cây ở ô \((2,5)\).

Nguồn

JOI 2017/2018, vòng loại, bài 5: Deforestation. Đề bài của Ban tổ chức Olympic Tin học Nhật Bản.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: