Google Code Jam 2014 - Allergy Testing

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

Kiểm tra dị ứng

Đề bài

Kelly bị dị ứng với đúng một trong số \(N\) loại thực phẩm, nhưng cô ấy không chắc là loại nào. Vì vậy, cô ấy quyết định thực hiện một số thí nghiệm để tìm ra loại thực phẩm đó.

Trong mỗi thí nghiệm, Kelly chọn một vài loại thực phẩm và ăn tất cả chúng. Cô ấy đợi \(A\) ngày để xem mình có phản ứng dị ứng nào không. Nếu không, cô ấy biết mình không bị dị ứng với bất kỳ loại thực phẩm nào đã ăn. Nếu có phản ứng, cô ấy phải đợi cho đến khi phản ứng đó biến mất: việc này mất tổng cộng \(B\) ngày (tính từ thời điểm cô ấy ăn thực phẩm).

Để đơn giản hóa việc thử nghiệm, Kelly quyết định đợi cho đến khi mỗi thí nghiệm kết thúc (sau \(A\) hoặc \(B\) ngày) trước khi bắt đầu thí nghiệm tiếp theo. Khi bắt đầu mỗi thí nghiệm, cô ấy có thể chọn nhóm thực phẩm muốn ăn dựa trên kết quả của các thí nghiệm trước đó.

Kelly chọn loại thực phẩm để ăn cho mỗi thí nghiệm sao cho tối thiểu hóa số ngày trong trường hợp xấu nhất trước khi cô ấy biết mình bị dị ứng với loại nào trong số \(N\) loại thực phẩm. Hỏi cô ấy mất bao lâu trong trường hợp xấu nhất?

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, mỗi bộ test nằm trên một dòng, chứa ba số nguyên cách nhau bởi dấu cách: \(N\), \(A\)\(B\).

Dữ liệu ra

Với mỗi bộ test, hãy xuất một dòng chứa "Case #x: y", trong đó x là số thứ tự bộ test (bắt đầu từ 1) và \(y\) là số ngày Kelly cần để tìm ra loại thực phẩm mình bị dị ứng trong trường hợp xấu nhất.

Ràng buộc

  • \(1 \le T \le 200\).

Phân nhóm

  • Small dataset:

    • \(1 \le N \le 10^{15}\).
    • \(1 \le A \le B \le 100\).
    • Large dataset:

    • \(1 \le N \le 10^{15}\).

    • \(1 \le A \le B \le 10^{12}\).

Đ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 15/50 30%
Test Set 2 35/50 70%

Ví dụ

Ví dụ 1

Input
3
4 5 7
8 1 1
1 23 32
Output
Case #1: 12
Case #2: 3
Case #3: 0
Note

Trong trường hợp ví dụ đầu tiên:

  • Đầu tiên, Kelly ăn thực phẩm số 1 và số 2.
  • Nếu cô ấy không có phản ứng sau 5 ngày, cô ấy ăn thực phẩm số 3. 5 ngày sau đó, cô ấy sẽ biết mình bị dị ứng với thực phẩm số 3 hay thực phẩm số 4.
  • Nếu cô ấy có phản ứng với thí nghiệm đầu tiên, thì 7 ngày sau thí nghiệm đầu tiên, cô ấy ăn thực phẩm số 1. 5 ngày sau đó, cô ấy sẽ biết mình bị dị ứng với thực phẩm số 1 hay thực phẩm số 2.

Nguồn

Google Code Jam 2014, Chung kết thế giới, bài Allergy Testing.

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: