trang chủ / bài tập / barcdist

Khoảng cách Barcelona

Đề bài

Mô tả

Thành phố được mô hình hóa bằng một mặt phẳng tọa độ. Các con phố là tất cả các đường thẳng dạng x=cy=c với mọi số nguyên c (tức là một lưới ô vuông). Ngoài ra còn có một đại lộ chéo, được biểu diễn bởi tập các điểm (x,y) thỏa mãn ax+by+c=0.

Bạn có thể đi bộ dọc theo các con phố (đường lưới) và dọc theo đại lộ chéo. Cho hai điểm nguyên AB. Hãy tìm quãng đường ngắn nhất cần đi để di chuyển từ A đến B.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên a, b, c mô tả đại lộ chéo (ít nhất một trong hai số a, b khác 0).
  • Dòng thứ hai chứa bốn số nguyên x1, y1, x2, y2 là tọa độ của hai điểm A=(x1,y1)B=(x2,y2).

Dữ liệu ra

In ra một số thực là quãng đường nhỏ nhất cần di chuyển từ A đến B. Đáp án được chấp nhận nếu sai số tuyệt đối hoặc tương đối không vượt quá 106.

Ràng buộc

  • 109a,b,c109, ít nhất một trong a, b khác 0.
  • 109x1,y1,x2,y2109.

Ví dụ

Input Output Giải thích
1 1 -3
0 3 3 0
4.2426406871 Hai điểm A=(0,3)B=(3,0) đều nằm trên đại lộ x+y3=0, nên có thể đi thẳng dọc đại lộ với khoảng cách 184.2426, ngắn hơn đường lưới (dài 6).
3 1 -9
0 3 3 -1
6.1622776602 Đi từ A=(0,3) dọc lưới tới điểm chạm đại lộ 3x+y9=0, đi dọc đại lộ rồi rời ra để tới B=(3,1) cho tổng quãng đường nhỏ nhất.

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