Google Code Jam 2013 - Pogo

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

Bạn vừa nhận được món quà tuyệt vời nhất từ trước đến nay: một chiếc gậy Pogo. Gậy pogo là dụng cụ dùng để nhảy lên khỏi mặt đất khi bạn đang đứng trên đó.

Chiếc gậy Pogo này rất đặc biệt: cú nhảy thứ nhất sẽ đưa bạn đi một khoảng cách \(1\) đơn vị, cú nhảy thứ hai sẽ đưa bạn đi \(2\) đơn vị, cú nhảy thứ ba là \(3\) đơn vị, và cứ tiếp tục như vậy. Bạn chỉ có thể nhảy theo bốn hướng bằng chiếc gậy này: bắc (tăng \(y\)), nam (giảm \(y\)), đông (tăng \(x\)) hoặc tây (giảm \(x\)).

Bây giờ bạn muốn chơi một trò chơi trong sân sau của mình, nơi được mô hình hóa như một mặt phẳng vô hạn. Bạn đang đứng với chiếc gậy tại điểm \((0, 0)\) và bạn muốn đi đến điểm \((X, Y)\).

Điểm \((X, Y)\) sẽ không bao giờ là \((0, 0)\), và nó luôn có thể đạt được từ điểm xuất phát của bạn.

Hãy kiểm tra kỹ phần dữ liệu ra, vì yêu cầu đầu ra cho tập dữ liệu nhỏ (Small) và tập dữ liệu lớn (Large) là không giống nhau.

Dữ liệu vào

Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ thử nghiệm, \(T\). Tiếp theo là \(T\) bộ thử nghiệm, mỗi bộ trên một dòng. Mỗi dòng gồm \(2\) số nguyên cách nhau bởi một khoảng trắng, \(X\)\(Y\), là tọa độ của điểm bạn muốn đến.

Dữ liệu ra

Với mỗi bộ thử nghiệm, hãy xuất một dòng chứa "Case #x: y", trong đó x là số thứ tự bộ thử nghiệm (bắt đầu từ 1) và y là một chuỗi đại diện cho các hướng di chuyển. Ví dụ, nếu bạn di chuyển theo hướng bắc, sau đó nam, sau đó đông, rồi tây, chuỗi này sẽ là NSEW.

  • Đối với tập dữ liệu nhỏ (Small), đầu ra được coi là đúng nếu nó không mất quá \(500\) bước nhảy để đến đích trong mỗi bộ thử nghiệm.
  • Đối với tập dữ liệu lớn (Large), đầu ra được coi là đúng nếu nó đến được điểm đích với số bước nhảy ít nhất có thể.

Nếu có nhiều giải pháp đúng, hãy in ra bất kỳ giải pháp nào.

Ràng buộc

  • \(1 \le T \le 50\) (Small).
  • \(0 \le |X|, |Y| \le 100\) (Small).
  • \(1 \le T \le 100\) (Large).
  • \(0 \le |X|, |Y| \le 10^6\) (Large).

Phân nhóm

Các giới hạn của từng tập dữ liệu được nêu trong mục Ràng buộc.

Đ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/35 28,57%
Test Set 2 25/35 71,43%

Ví dụ

Ví dụ 1

Input
2
3 4
-3 4
Output
Case #1: ENWSEN
Case #2: ENSWN
Note

Đầu ra cho bộ thử nghiệm ví dụ đầu tiên sẽ không được coi là đúng nếu nó nằm trong tập dữ liệu lớn, vì số lượng bước nhảy không phải là tối thiểu. WNSEN sẽ là một đầu ra đúng cho bộ thử nghiệm này nếu nó nằm trong tập dữ liệu lớn.

Nguồn

Google Code Jam 2013, Vòng 1C, bài Pogo.

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: