Google Code Jam 2012 - Twirling Towards Freedom

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

“Tôi nói rằng chúng ta phải tiến lên, không phải lùi lại; \n> đi lên, không phải tiến về phía trước; \n> và luôn xoay, xoay, xoay về phía tự do!” \n> — Kodos, cựu ứng cử viên Tổng thống Hoa Kỳ.

Sau khi nghe câu nói đầy cảm hứng này từ ứng cử viên tổng thống đầu tiên của Mỹ đến từ hành tinh Rigel VII, bạn đã quyết định rằng mình cũng muốn xoay (rotate) để hướng tới tự do. Trong bài toán này, bạn có thể coi "tự do" là việc ở cách xa vị trí xuất phát nhất có thể.

Thiên hà là một mặt phẳng hai chiều. Tàu vũ trụ của bạn bắt đầu tại gốc tọa độ, vị trí \((0, 0)\). Có \(N\) ngôi sao trong thiên hà. Mỗi phút, bạn có thể chọn một ngôi sao và xoay tàu vũ trụ của mình 90 độ theo chiều kim đồng hồ quanh ngôi sao đó. Bạn cũng có thể chọn đứng yên tại chỗ.

Hỏi bạn có thể đi bao xa so với gốc tọa độ sau \(M\) phút?

Hình ảnh minh họa 3 lần xoay đầu tiên cho một lộ trình có thể có trong ví dụ 1. Lưu ý rằng lộ trình này không nhất thiết phải là một phần của bất kỳ giải pháp tối ưu nào.

Dữ liệu vào

Dòng đầu tiên của đầu vào cho biết số lượng bộ test, \(T\). \(T\) bộ test tiếp theo, bắt đầu bằng hai dòng chứa các số nguyên \(N\)\(M\). \(N\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(X_i\)\(Y_i\), đại diện cho vị trí của các ngôi sao.

Dữ liệu ra

Đối với mỗi bộ test, hãy xuất một dòng chứa "Case #x: \(D\)", trong đó x là số thứ tự bộ test (bắt đầu từ 1) và \(D\) là khoảng cách từ gốc tọa độ đến vị trí cuối cùng tối ưu. Các câu trả lời có sai số tuyệt đối hoặc tương đối không lớn hơn \(10^{-6}\) sẽ được chấp nhận.

Ràng buộc

  • \(1 \le T \le 100\);
  • \(-1000 \le X_i \le 1000\);
  • \(-1000 \le Y_i \le 1000\).
  • Không có hai ngôi sao nào ở cùng một vị trí.
  • Có thể có một ngôi sao tại gốc tọa độ.

Phân nhóm

  • Test set 1 (Visible): \(1 \le N \le 10\); \(1 \le M \le 10\).
  • Test set 2 (Hidden): \(1 \le N \le 5000\); \(1 \le M \le 10^8\).

Đ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/49 20,41%
Test Set 2 39/49 79,59%

Ví dụ

Ví dụ 1

Input
3
4
1
-2 4
1 -2
4 1
0 2
1
4
-5 0
2
5
-1 1
-2 2
Output
Case #1: 6.3245553203
Case #2: 10.0000000000
Case #3: 6.3245553203

Nguồn

Google Code Jam 2012, Chung kết thế giới, bài Twirling Towards Freedom.

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: