| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Google Code Jam 2008 - Milkshakes | 35 | 1.0s | 1G |
| 2 | Google Code Jam 2008 - Minimum Scalar Product | 15 | 1.0s | 1G |
| 3 | Google Code Jam 2008 - Numbers | 50 | 1.0s | 1G |
Bạn sở hữu một cửa hàng sữa lắc. Có \(N\) hương vị khác nhau mà bạn có thể chuẩn bị, và mỗi hương vị có thể được chế biến theo kiểu "malted" (có mạch nha) hoặc "unmalted" (không có mạch nha). Vì vậy, bạn có thể tạo ra \(2N\) loại sữa lắc khác nhau.
Mỗi khách hàng của bạn có một tập hợp các loại sữa lắc mà họ thích, và họ sẽ hài lòng nếu bạn chuẩn bị ít nhất một trong những loại đó. Trong số các loại mà một khách hàng thích, có tối đa một loại là hương vị "malted".
Bạn muốn tạo ra \(N\) mẻ sữa lắc sao cho:
Hãy tìm xem có thể làm hài lòng tất cả khách hàng của bạn với những ràng buộc này hay không, và nếu có, bạn nên làm những loại sữa lắc nào.
Nếu có thể làm hài lòng tất cả khách hàng, sẽ chỉ có duy nhất một đáp án tối thiểu hóa số lượng mẻ malted.
Tất cả các số này được phân tách bằng các khoảng trắng đơn.
\(C\) dòng, mỗi dòng cho một bộ dữ liệu theo thứ tự xuất hiện trong tệp đầu vào, mỗi dòng chứa chuỗi "Case #\(X\): " trong đó \(X\) là số thứ tự của bộ dữ liệu, bắt đầu từ 1, tiếp theo là:
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ụ 1
2
5
3
1 1 1
2 1 0 2 0
1 5 0
1
2
1 1 0
1 1 1
Case #1: 1 0 0 0 0
Case #2: IMPOSSIBLE
Giải thích ví dụ:
Google Code Jam 2008, Vòng 1A, bài Milkshakes.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Cho hai vectơ \(v_1 = (x_1, x_2, ..., x_n)\) và \(v_2 = (y_1, y_2, ..., y_n)\). Tích vô hướng của hai vectơ này là một số duy nhất, được tính bằng \(x_1y_1 + x_2y_2 + ... + x_ny_n\).
Giả sử bạn được phép hoán vị các tọa độ của mỗi vectơ theo ý muốn. Hãy chọn hai hoán vị sao cho tích vô hướng của hai vectơ mới là nhỏ nhất có thể và xuất ra giá trị tích vô hướng tối thiểu đó.
Dòng đầu tiên của tệp dữ liệu vào chứa số nguyên \(T\) - số lượng bộ dữ liệu (test case). Với mỗi bộ dữ liệu:
Với mỗi bộ dữ liệu, xuất ra một dòng:
Case #X: Y
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 | 5/15 | 33,33% |
| Test Set 2 | 10/15 | 66,67% |
Ví dụ 1
2
3
1 3 -5
-2 4 1
5
1 2 3 4 5
1 0 1 0 1
Case #1: -25
Case #2: 6
Google Code Jam 2008, Vòng 1A, bài Minimum Scalar Product.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Trong bài toán này, bạn phải tìm ba chữ số cuối cùng trước dấu phẩy thập phân của số \((3 + \sqrt{5})^n\).
Ví dụ, khi \(n = 5\), \((3 + \sqrt{5})^5 = 3935.73982...\) Câu trả lời là \(935\).
Với \(n = 2\), \((3 + \sqrt{5})^2 = 27.4164079...\) Câu trả lời là \(027\).
Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ test, \(T\). \(T\) bộ test theo sau, mỗi bộ trên một dòng riêng biệt. Mỗi bộ test chứa một số nguyên dương \(n\).
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à ba chữ số nguyên cuối cùng của số \((3 + \sqrt{5})^n\). Trong trường hợp số đó có ít hơn ba chữ số nguyên, hãy thêm các số không ở đầu để đầu ra của bạn chứa đúng ba chữ số.
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ụ 1
2
5
2
Case #1: 935
Case #2: 027
Google Code Jam 2008, Vòng 1A, bài Numbers.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.