Google Code Jam 2021 - Prime Time

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 đang chơi một trò solitaire mới tên Prime Time. Bạn có một bộ bài, mỗi lá ghi một số nguyên tố; nhiều lá có thể ghi cùng số.

Mục tiêu là chia các lá thành hai nhóm sao cho tổng các số của nhóm thứ nhất bằng tích các số của nhóm thứ hai. Mỗi lá thuộc đúng một nhóm và mỗi nhóm phải có ít nhất một lá. Tổng hoặc tích của nhóm một lá chính là số trên lá đó.

Trong hình, nhóm trái có tổng \(25\), nhóm phải có tích \(25\), nên đây là cách chia hợp lệ. Điểm của bạn là tổng nhóm thứ nhất — cũng là tích nhóm thứ hai — hoặc bằng \(0\) nếu không thể chia. Hãy tìm điểm lớn nhất.

Dữ liệu vào

Dòng đầu chứa số bộ dữ liệu \(T\). Dòng đầu mỗi bộ chứa \(M\), số lượng số nguyên tố phân biệt. Mỗi trong \(M\) dòng tiếp theo chứa \(P_i,N_i\), nghĩa là có đúng \(N_i\) lá ghi số nguyên tố \(P_i\). Tổng số lá là \(\sum_iN_i\).

Dữ liệu ra

Với mỗi bộ dữ liệu, in Case #x: y, trong đó \(x\) là số thứ tự (bắt đầu từ \(1\)), còn \(y\) là điểm lớn nhất.

Ràng buộc

  • \(1\le T\le100\); \(1\le M\le95\) (có đúng \(95\) số nguyên tố từ \(2\) đến \(499\)).
  • \(2\le P_i\le499\); mọi \(P_i\) nguyên tố; \(P_i<P_{i+1}\).
  • \(N_i\ge1\) với mọi \(i\).

Phân nhóm

  • Test Set 1 (Visible Verdict): \(2\le\sum N_i\le10\).
  • Test Set 2 (Visible Verdict): \(2\le\sum N_i\le100\).
  • Test Set 3 (Hidden Verdict): \(2\le\sum N_i\le10^{15}\).

Đ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 7/35 20%
Test Set 2 13/35 37,14%
Test Set 3 15/35 42,86%

Ví dụ

Ví dụ 1

Input
4
5
2 2
3 1
5 2
7 1
11 1
1
17 2
2
2 2
3 1
1
2 7
Output
Case #1: 25
Case #2: 17
Case #3: 0
Case #4: 8
Giải thích

Ở mẫu #1, cách chia tối ưu là \(11+2+7+3+2=5\cdot5\). Cách \(5+7+3+2+5=11\cdot2\) cũng hợp lệ nhưng điểm thấp hơn. Ở mẫu #2, các lá cùng ghi một số vẫn có thể nằm ở hai nhóm khác nhau.

Nguồn

Google Code Jam 2021, Vòng 1A, bài Prime Time.

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: