Thợ mỏ kim cương

Đề bài

Mô tả

n người thợ mỏ và n mỏ kim cương nằm trên một mặt phẳng toạ độ.

  • Mỗi người thợ mỏ là một điểm nằm trên trục Oy (tức có hoành độ bằng 0).
  • Mỗi mỏ kim cương là một điểm nằm trên trục Ox (tức có tung độ bằng 0).

Không có điểm nào trùng với gốc toạ độ (0,0).

Mỗi người thợ mỏ phải khai thác đúng một mỏ kim cương, và mỗi mỏ được khai thác bởi đúng một người thợ (một phép ghép cặp một-một giữa thợ và mỏ). Nếu một người thợ ở vị trí (a,b) khai thác mỏ ở vị trí (c,d) thì chi phí năng lượng bỏ ra bằng khoảng cách Euclid giữa hai điểm:

(ac)2+(bd)2.

Hãy tìm cách ghép cặp sao cho tổng chi phí năng lượng của tất cả người thợ là nhỏ nhất, và in ra giá trị nhỏ nhất đó.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n.
    • 2n dòng tiếp theo, mỗi dòng chứa hai số nguyên xy mô tả một điểm (x,y). Nếu x=0 thì đây là một người thợ mỏ ở (0,y); nếu y=0 thì đây là một mỏ kim cương ở (x,0). Có thể có nhiều thợ hoặc nhiều mỏ nằm cùng một vị trí.

Đảm bảo số điểm nằm trên trục Ox bằng n và số điểm nằm trên trục Oy cũng bằng n, và không điểm nào ở gốc toạ độ.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số thực là tổng chi phí năng lượng nhỏ nhất.

Đáp án được chấp nhận nếu sai số tuyệt đối hoặc tương đối so với đáp án đúng không vượt quá 109.

Ràng buộc

  • 1t10
  • 1n105
  • 108x,y108
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 105.

Ví dụ

Input Output Giải thích
1
2
0 1
1 0
0 -1
-2 0
3.650281539873 Thợ ở (0,1), (0,1); mỏ ở (1,0), (2,0). Ghép (0,1) với (1,0)(0,1) với (2,0) được tổng 2+53.6503.
1
1
0 100000000
100000000 0
141421356.237309515476 Chỉ một cặp: khoảng cách 2·108.

(Trong ví dụ đầu t=1 để minh hoạ một bộ dữ liệu; định dạng thực tế cho phép nhiều bộ.)

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