JOI 2014 - Super Metropolis

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

JOI được giao lập kế hoạch cho một chuyến tham quan thành phố Siêu Đô ở đất nước IOI.

Siêu Đô được chia thành một lưới ô vuông bởi \(W\) con đường thẳng chạy theo hướng bắc–nam và \(H\) con đường thẳng chạy theo hướng đông–tây.

Các con đường bắc–nam được đánh số \(1, 2, \ldots, W\) từ tây sang đông. Các con đường đông–tây được đánh số \(1, 2, \ldots, H\) từ nam lên bắc. Giao điểm của con đường bắc–nam thứ \(i\) tính từ phía tây và con đường đông–tây thứ \(j\) tính từ phía nam được ký hiệu là \((i, j)\).

Ngoài ra, từ mỗi giao điểm còn có một đoạn đường đến giao điểm liền kề về phía đông bắc, trừ các giao điểm nằm trên con đường cực bắc hoặc cực đông. Tương tự, có một đoạn đường đến giao điểm liền kề về phía tây nam, trừ các giao điểm nằm trên con đường cực nam hoặc cực tây.

Cụ thể, từ giao điểm \((i, j)\), có thể đi qua một đoạn đường để đến mỗi giao điểm trong số \((i - 1, j)\), \((i + 1, j)\), \((i, j - 1)\), \((i, j + 1)\) nếu giao điểm đó tồn tại. Ngoài ra, cũng có thể đi qua một đoạn đường để đến \((i - 1, j - 1)\) hoặc \((i + 1, j + 1)\) nếu giao điểm đó tồn tại.

JOI đã quyết định thứ tự ghé thăm \(N\) điểm tham quan. Điểm tham quan thứ \(i\) cần ghé thăm (\(1 \le i \le N\)) nằm tại giao điểm \((X_i, Y_i)\). Để rút ngắn thời gian của chuyến tham quan, JOI muốn giảm số đoạn đường phải đi qua.

Hãy viết chương trình tìm tổng số đoạn đường ít nhất phải đi qua để ghé thăm các điểm tham quan theo đúng thứ tự đã định.

Chuyến tham quan bắt đầu tại giao điểm \((X_1, Y_1)\). Trong chuyến đi, JOI không được ra ngoài Siêu Đô. JOI có thể đi qua giao điểm có một điểm tham quan mà không ghé thăm điểm tham quan đó.

Làm rõ về tổng số đoạn đường: Có thể đi qua cùng một đoạn đường hai lần trở lên trong chuyến tham quan. Khi tính tổng số đoạn đường, đoạn đường đó được tính lặp lại đúng bằng số lần đi qua.

Dữ liệu vào

Dữ liệu vào gồm \(1 + N\) dòng:

  • Dòng đầu tiên chứa ba số nguyên \(W, H, N\), cách nhau bởi dấu cách.
  • Dòng thứ \(i\) trong \(N\) dòng tiếp theo (\(1 \le i \le N\)) chứa hai số nguyên \(X_i, Y_i\), cách nhau bởi dấu cách, cho biết điểm tham quan thứ \(i\) cần ghé thăm nằm tại giao điểm \((X_i, Y_i)\).

Dữ liệu ra

In ra một dòng chứa tổng số đoạn đường ít nhất phải đi qua để ghé thăm các điểm tham quan theo đúng thứ tự.

Ràng buộc

  • \(2 \le W \le 10000\).
  • \(2 \le H \le 10000\).
  • \(1 \le N \le 1000\).
  • \(1 \le X_i \le W\)\(1 \le Y_i \le H\) với mọi \(1 \le i \le N\).

Ví dụ

Ví dụ 1

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

Chẳng hạn, có thể đi qua các giao điểm theo thứ tự \((1, 1)\), \((2, 2)\), \((3, 3)\), \((3, 2)\), \((4, 2)\), \((4, 1)\).

Ví dụ 2

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

Như trong ví dụ này, có thể phải ghé thăm cùng một giao điểm nhiều lầ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: