Google Code Jam 2008 - Star Wars

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: 2200 Thời gian: 14.5s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Gần hành tinh Hỏa, trong một thiên hà xa xôi kỳ lạ rất giống với thiên hà của chúng ta, đang diễn ra một cuộc chiến sinh tử giữa lực lượng đế chế và quân phiến loạn. Quân đội phiến loạn có \(N\) con tàu, chúng ta sẽ coi chúng là các điểm \((x_i, y_i, z_i)\). Mỗi con tàu có một bộ thu với công suất \(p_i\). Quân phiến loạn cần có khả năng gửi thông điệp từ tàu tuần dương trung tâm đến tất cả các con tàu, nhưng họ đang eo hẹp về tài chính nên không thể trang bị một bộ phát quá mạnh.

Nếu tàu tuần dương được đặt tại \((x, y, z)\), và một trong các con tàu khác ở \((x_i, y_i, z_i)\) có bộ thu công suất \(p_i\), thì công suất bộ phát của tàu tuần dương cần ít nhất là:

(|xi - x| + |yi - y| + |zi - z|) / pi

Nhiệm vụ của bạn là tìm vị trí đặt tàu tuần dương sao cho cực tiểu hóa công suất cần thiết cho bộ phát của nó, và in ra công suất đó.

Dữ liệu vào

Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ test, \(T\). \(T\) bộ test nối tiếp theo sau.

Mỗi bộ test chứa số nguyên \(N\) ở dòng đầu tiên, là số lượng con tàu trong bộ test đó.

\(N\) dòng tiếp theo, mỗi dòng chứa bốn số nguyên \(x_i, y_i, z_i\)\(p_i\), cách nhau bởi các khoảng trắng đơn. Đây là tọa độ của con tàu thứ \(i\) và công suất bộ thu của nó. Có thể có nhiều hơn một con tàu ở cùng một tọa độ.

Dữ liệu ra

Đối với mỗi bộ test, bạn nên xuất ra:

Case #X: Y

trong đó X là số thứ tự của bộ test và Y là công suất tối thiểu đủ để tiếp cận tất cả các con tàu trong hạm đội. Các câu trả lời có sai số tương đối hoặc tuyệt đối không quá \(10^{-6}\) sẽ được coi là chính xác.

Ràng buộc

  • \(1 \le T \le 10\)
  • \(0 \le x_i, y_i, z_i \le 10^6\)
  • \(1 \le p_i \le 10^6\)

Phân nhóm

  • Small dataset (Test set 1 - Visible): \(1 \le N \le 10\)
  • Large dataset (Test set 2 - Hidden): \(1 \le N \le 1000\)

Điểm các phân nhóm

Mỗi Test Set tương ứng với một subtask trên LQDOJ. Bảng dưới đây giữ nguyên điểm chính thức của Google Code Jam và quy đổi tỷ lệ trên tổng điểm của bài.

Phân nhóm Điểm Google Code Jam Tỷ lệ điểm của bài
Test Set 1 10/30 33,33%
Test Set 2 20/30 66,67%

Ví dụ

Ví dụ 1

Input
3
4
0 0 0 1
1 2 0 1
3 4 0 1
2 1 0 1
1
1 1 1 1
3
1 0 0 1
2 1 1 4
3 2 3 2
Output
Case #1: 3.50000000
Case #2: 0.00000000
Case #3: 2.33333333
Note

Trong bộ test đầu tiên, bốn con tàu có tọa độ \((0, 0, 0), (1, 2, 0), (3, 4, 0), (2, 1, 0)\) và công suất tương ứng là \(1, 1, 1, 1\). Chúng ta có thể đặt một tàu tuần dương với công suất \(3.5\) tại tọa độ \((1.5, 2, 0)\), vị trí này có thể tiếp cận tất cả các con tàu.

Trong trường hợp thứ hai, chúng ta có thể đặt tàu tuần dương ngay trên đỉnh của con tàu, với công suất bộ phát bằng \(0\).

Nguồn

Google Code Jam 2008, Vòng 2, bài Star Wars.

Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.

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: