JOI 2012 - Illumination

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: 1100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Các tòa nhà của công ty JOI có hình dạng được ghép từ những hình lục giác đều có cạnh dài \(1\) mét. Giáng sinh đang đến gần, nên công ty quyết định trang trí các bức tường của tòa nhà bằng đèn. Tuy nhiên, trang trí những phần không thể nhìn thấy từ bên ngoài là lãng phí. Vì vậy, chỉ trang trí các mặt tường có thể đi tới từ bên ngoài mà không đi xuyên qua tòa nhà.

Hình minh họa trong phần giải thích Ví dụ 1 cho thấy một cách bố trí các tòa nhà nhìn từ trên cao. Những con số trong mỗi ô lục giác biểu thị tọa độ. Ô màu xám là nơi có tòa nhà, còn ô màu trắng là nơi không có tòa nhà.

Yêu cầu

Cho bản đồ biểu diễn vị trí các tòa nhà, hãy tính tổng chiều dài các mặt tường cần trang trí bằng đèn. Có thể đi lại tự do ở bên ngoài bản đồ, nhưng không thể đi qua giữa hai tòa nhà kề nhau.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên \(W\), \(H\), cách nhau bởi dấu cách.

Tiếp theo là \(H\) dòng mô tả vị trí các tòa nhà. Dòng thứ \(i+1\), với \(1 \le i \le H\), chứa \(W\) số nguyên cách nhau bởi dấu cách. Số thứ \(j\), với \(1 \le j \le W\), bằng \(1\) nếu ô lục giác ở tọa độ \((j,i)\) có tòa nhà và bằng \(0\) nếu không có.

Tọa độ trên bản đồ tuân theo các quy tắc sau:

  • Ô lục giác ở phía tây nhất của hàng phía bắc nhất có tọa độ \((1,1)\).
  • Ô lục giác kề phía đông của ô \((x,y)\) có tọa độ \((x+1,y)\).
  • Khi \(y\) lẻ, ô lục giác kề phía tây nam của ô \((x,y)\) có tọa độ \((x,y+1)\).
  • Khi \(y\) chẵn, ô lục giác kề phía đông nam của ô \((x,y)\) có tọa độ \((x,y+1)\).

Dữ liệu ra

In ra một dòng chứa tổng chiều dài các mặt tường cần trang trí bằng đèn, tính bằng mét.

Ràng buộc

  • \(1 \le W,H \le 100\).
  • Mỗi ô trên bản đồ có giá trị \(0\) hoặc \(1\).
  • Có ít nhất một ô chứa tòa nhà.
  • Mọi giá trị trong dữ liệu vào đều là số nguyên.

Ví dụ

Ví dụ 1

Input
8 4
0 1 0 1 0 1 1 1
0 1 1 0 0 1 0 0
1 0 1 0 1 1 1 1
0 1 1 0 1 0 1 0
Output
64
Giải thích

Các đoạn nét liền màu đỏ trong hình biểu thị những mặt tường cần trang trí. Ví dụ này tương ứng với bản đồ trong hình; tổng chiều dài các mặt tường cần trang trí là \(64\) mét.

Ví dụ 2

Input
8 5
0 1 1 1 0 1 1 1
0 1 0 0 1 1 0 0
1 0 0 1 1 1 1 1
0 1 0 1 1 0 1 0
0 1 1 0 1 1 0 0
Output
56

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: