Đi bộ trên mặt phẳng 2D

Đề bài

Mô tả

Trên mặt phẳng tọa độ có một người bắt đầu đứng tại điểm (0,0). Trong mỗi bước, người này có thể di chuyển sang một trong bốn ô kề cạnh: lên, xuống, trái, phải (mỗi bước thay đổi một đơn vị theo một trục).

n điểm quan trọng phân biệt trên mặt phẳng. Điểm thứ ipi=(xi,yi) với 0xi0yi, và không có điểm nào trùng (0,0).

Định nghĩa cấp của điểm pimax(xi,yi). Người này phải đi thăm tất cả các điểm quan trọng, nhưng không được thăm bất kỳ điểm nào ở cấp k+1 khi chưa thăm hết tất cả các điểm ở cấp k. Người này bắt đầu thăm từ cấp nhỏ nhất có mặt trong tập điểm. Thứ tự thăm các điểm trong cùng một cấp là tùy ý.

Khoảng cách giữa hai điểm (x1,y1)(x2,y2)|x1x2|+|y1y2|.

Hãy tìm tổng quãng đường nhỏ nhất mà người này phải đi để thăm hết tất cả các điểm theo đúng thứ tự cấp mô tả ở trên.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số điểm quan trọng.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên xiyi.

Dữ liệu ra

  • In ra một số nguyên là tổng quãng đường nhỏ nhất.

Ràng buộc

  • 1n2·105
  • 0xi,yi109
  • Tất cả các điểm phân biệt và không có điểm nào là (0,0).

Ví dụ

Input Output Giải thích
5
2 1
1 0
2 0
3 2
0 3
9 Các cấp: (1,0) cấp 1; (2,1),(2,0) cấp 2; (3,2),(0,3) cấp 3. Thăm lần lượt theo cấp, tổng quãng đường nhỏ nhất là 9.
8
2 2
1 4
2 3
3 1
3 4
1 1
4 3
1 2
15 Một hành trình tối ưu có độ dài 15.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0