trang chủ / đề bài / voi22_inet

Kết nối internet

Đề bài

Mô tả

Thành phố nơi Nam sinh sống đã xây dựng hệ thống Wi-Fi công cộng để phục vụ khách du lịch và người dân trong thành phố. Hệ thống bao gồm n trạm phát sóng được đánh số từ 1 đến n, trạm thứ i được đặt ở vị trí tương ứng với tọa độ (xi,yi) trên bản đồ mặt phẳng tọa độ của thành phố. Các trạm phát sóng này đều có mức độ phủ sóng là s. Hai trạm phát sóng i và j có thể truyền thông tin cho nhau bằng sóng nếu |xi−xj|+|yi−yj|≤s, hoặc trạm phát sóng i có thể truyền thông tin qua một số trạm phát sóng trung gian để tới được trạm phát sóng j. Một nhóm các trạm phát sóng gọi là liên thông nếu như hai trạm bất kỳ trong nhóm có thể truyền thông tin cho nhau. Mỗi nhóm liên thông chỉ cần một đường truyền cung cấp internet để tất cả các trạm phát sóng này đều có thể phát được mạng internet cho người dân sử dụng.

Tuy nhiên, sau một thời gian sử dụng, chi phí duy trì hoạt động của hệ thống này là rất lớn, trong đó chi phí sử dụng mạng internet hàng tháng là chiếm nhiều nhất. Chi phí sử dụng mạng internet tỉ lệ thuận với số đường truyền cung cấp internet. Do đó, chính quyền thành phố muốn giảm thiểu số lượng đường truyền cung cấp internet mà vẫn bảo đảm tất cả các trạm đều có mạng internet bằng cách thiết kế các đường dây cáp kết nối trực tiếp một số trạm phát sóng với nhau. Với hai trạm phát sóng u và v chưa truyền được thông tin cho nhau, khi kết nối trực tiếp chúng bằng đường dây cáp, hai trạm phát sóng này có thể truyền tin cho nhau, vì vậy, nếu một trong hai trạm có mạng internet thì trạm còn lại cũng có mạng internet và toàn bộ nhóm liên thông chứa trạm này đều phát được mạng internet, do đó, có thể giảm đi một đường truyền cung cấp internet. Chi phí để kết nối hai trạm phát sóng u và v bằng đường dây cáp là |xu−xv|+|yu−yv|. Chính quyền thành phố muốn xây dựng phương án giảm đi k đường truyền cung cấp internet mà vẫn bảo đảm trạm phát sóng nào cũng có mạng internet bằng cách sử dụng thêm k đường dây cáp kết nối trực tiếp sao cho tổng chi phí kết nối bằng dây cáp là nhỏ nhất.

Yêu cầu: Cho biết số lượng và vị trí của n trạm phát sóng, mức độ phủ sóng s của các trạm phát sóng và số lượng k đường truyền cung cấp internet cần giảm đi, hãy tính chi phí nhỏ nhất để kết nối các trạm phát sóng bằng dây cáp sao cho trạm phát sóng nào cũng có mạng internet.

Dữ liệu vào

  • Dòng đầu tiên chứa ba số nguyên dương n,s,k (n≤105; s≤109; k≤20);
  • Dòng thứ i trong số n dòng tiếp theo chứa hai số nguyên không âm xi,yi mô tả vị trí trạm phát sóng thứ i (1≤i≤n; xi,yi≤109).

Dữ liệu bảo đảm không có hai trạm phát sóng nào có tọa độ trùng nhau và số lượng đường truyền cung cấp internet cần sử dụng cho hệ thống ban đầu lớn hơn k.

Các số trên cùng một dòng cách nhau bởi dấu cách.

Dữ liệu ra

In ra một số nguyên duy nhất là chi phí nhỏ nhất để kết nối các trạm phát sóng thỏa mãn yêu cầu.

Ràng buộc

  • 1≤n≤105; 1≤s≤109; 1≤k≤20.
  • 0≤xi,yi≤109; các trạm có tọa độ đôi một khác nhau.
  • Số nhóm liên thông ban đầu lớn hơn k.

Subtasks

  • Subtask 1 (20% số điểm): n≤1000.
  • Subtask 2 (20% số điểm): tọa độ tất cả các trạm phát sóng đều nằm trên một đường thẳng.
  • Subtask 3 (20% số điểm): giá trị tọa độ mỗi trạm phát sóng không vượt quá 1000.
  • Subtask 4 (40% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 4 1
1 1
3 4
8 5
5 5
7 1
5 Ban đầu có 3 nhóm liên thông là {Trạm 1}, {Trạm 2, Trạm 3, Trạm 4} và {Trạm 5}. Phương án cho chi phí nhỏ nhất để giảm bớt một đường truyền cung cấp internet là nối cặp giữa Trạm 3 và Trạm 5 cho chi phí bằng |8−7|+|5−1|=5.
5 2 2
0 0
2 0
5 0
9 0
9 3
6 Ví dụ thêm (không có trong đề gốc). Ban đầu có 4 nhóm: {Trạm 1, Trạm 2}, {Trạm 3}, {Trạm 4}, {Trạm 5}. Nối Trạm 2 với Trạm 3 (chi phí 3) và Trạm 4 với Trạm 5 (chi phí 3).

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0