| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Google Code Jam 2010 - File Fix-it | 26 | 1.0s | 1G |
| 2 | Google Code Jam 2010 - Picking Up Chicks | 30 | 1.0s | 1G |
| 3 | Google Code Jam 2010 - Your Rank is Pure | 44 | 1.0s | 1G |
Trên các máy tính Unix, dữ liệu được lưu trữ trong các thư mục (directories). Có một thư mục gốc (root directory), và thư mục này có thể chứa nhiều thư mục con bên trong, mỗi thư mục có tên khác nhau. Các thư mục này lại có thể chứa thêm nhiều thư mục khác nữa, và cứ tiếp tục như vậy.
Một thư mục được xác định duy nhất bởi tên của nó và thư mục cha (thư mục trực tiếp chứa nó). Điều này thường được mã hóa trong một đường dẫn (path), bao gồm nhiều phần, mỗi phần được bắt đầu bằng một dấu gạch chéo ('/'). Phần cuối cùng là tên của thư mục, và tất cả các phần còn lại tạo nên đường dẫn của thư mục cha. Ví dụ, xét đường dẫn:
/home/gcj/finals
Đường dẫn này tham chiếu đến thư mục có tên "finals" nằm trong thư mục được mô tả bởi "/home/gcj", thư mục này lại tham chiếu đến thư mục có tên "gcj" trong thư mục được mô tả bởi đường dẫn "/home". Trong đường dẫn "/home", chỉ có một phần, nghĩa là nó tham chiếu đến thư mục có tên "home" trong thư mục gốc.
Để tạo một thư mục, bạn có thể sử dụng lệnh mkdir. Bạn chỉ định một đường dẫn, và sau đó mkdir sẽ tạo thư mục được mô tả bởi đường dẫn đó, nhưng chỉ khi thư mục cha của nó đã tồn tại. Ví dụ, nếu bạn muốn tạo các thư mục "/home/gcj/finals" và "/home/gcj/quals" từ đầu, bạn sẽ cần bốn lệnh:
mkdir /home
mkdir /home/gcj
mkdir /home/gcj/finals
mkdir /home/gcj/quals
Cho tập hợp đầy đủ các thư mục đã tồn tại trên máy tính của bạn và một tập hợp các thư mục mới mà bạn muốn tạo (nếu chúng chưa tồn tại), bạn cần sử dụng bao nhiêu lệnh mkdir?
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ộ test bắt đầu bằng một dòng chứa hai số nguyên \(N\) và \(M\), cách nhau bởi một khoảng trắng.
\(N\) dòng tiếp theo, mỗi dòng cho biết đường dẫn của một thư mục đã tồn tại trên máy tính của bạn. Danh sách này sẽ bao gồm mọi thư mục đã có trên máy tính ngoại trừ thư mục gốc. (Thư mục gốc có trên mọi máy tính, vì vậy không cần liệt kê rõ ràng.)
\(M\) dòng tiếp theo, mỗi dòng cho biết đường dẫn của một thư mục mà bạn muốn tạo.
Mỗi đường dẫn trong dữ liệu vào được định dạng như mô tả trong đề bài ở trên. Cụ thể, một đường dẫn bao gồm một hoặc nhiều chuỗi ký tự chữ-số thường (tức là các chuỗi chỉ chứa các ký hiệu 'a'-'z' và '0'-'9'), mỗi chuỗi được bắt đầu bởi một dấu gạch chéo duy nhất. Các chuỗi chữ-số này không bao giờ để trống.
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ố lượng lệnh mkdir bạn cần sử dụng.
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 | 12/26 | 46,15% |
| Test Set 2 | 14/26 | 53,85% |
Ví dụ 1
3
0 2
/home/gcj/finals
/home/gcj/quals
2 1
/chicken
/chicken/egg
/chicken
1 3
/a
/a/b
/a/c
/b/b
Case #1: 4
Case #2: 0
Case #3: 4
Google Code Jam 2010, Vòng 1B, bài File Fix-it.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Một đàn gà con chạy về phía đông trên đường thẳng hẹp, mỗi con có vận tốc không đổi. Khi bắt kịp con trước, nó phải chậm lại theo vận tốc con đó. Bạn lái cần cẩu phía sau; có thể nhấc tạm một con để con ngay sau vượt qua rồi đặt lại. Thao tác tức thời, chỉ áp dụng cho hai con kề nhau; dù nhiều con cùng vị trí, mỗi lần đổi chỗ chỉ cho một con vượt.
Biết vị trí đầu \(X_i\), vận tốc tự nhiên \(V_i\), vị trí chuồng \(B\) và hạn \(T\), hãy tìm số lần đổi chỗ ít nhất để ít nhất \(K\) trong \(N\) con tới chuồng không muộn hơn \(T\).
Dòng đầu là \(C\). Mỗi test gồm \(N,K,B,T\); dòng sau là \(N\) vị trí \(X_i\) tăng nghiêm ngặt; dòng cuối là \(N\) vận tốc \(V_i\). Đơn vị lần lượt là mét, mét/giây và giây.
In Case #x: S, với \(S\) nhỏ nhất, hoặc IMPOSSIBLE.
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 | 13/30 | 43,33% |
| Test Set 2 | 17/30 | 56,67% |
Ví dụ 1
3
5 3 10 5
0 2 5 6 7
1 1 1 1 4
5 3 10 5
0 2 3 5 7
2 1 1 1 4
5 3 10 5
0 2 3 4 7
2 1 1 1 4
Case #1: 0
Case #2: 2
Case #3: IMPOSSIBLE
Google Code Jam 2010, Vòng 1B, bài Picking Up Chicks.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Trò chơi này có thể chơi trên bất kỳ tập con \(S\) nào của các số nguyên dương. Một số trong \(S\) được coi là thuần khiết (pure) đối với \(S\) nếu, bắt đầu từ nó, bạn có thể liên tiếp lấy thứ hạng (rank) của nó trong \(S\), và nhận được một số cũng nằm trong \(S\), cho đến khi sau một số bước hữu hạn, bạn chạm đến số 1, số này không nằm trong \(S\).
Khi cho trước \(n\), có bao nhiêu cách để bạn chọn \(S\), một tập con của \(\{2, 3, \dots, n\}\), sao cho \(n\) là thuần khiết đối với \(S\)? Câu trả lời có thể là một số rất lớn, bạn cần đưa ra kết quả theo modulo 100003.
Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ test, \(T\). \(T\) dòng tiếp theo, mỗi dòng chứa một số nguyên duy nhất \(n\).
Đối 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à câu trả lời như mô tả ở trên.
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 | 14/44 | 31,82% |
| Test Set 2 | 30/44 | 68,18% |
Ví dụ 1
2
5
6
Case #1: 5
Case #2: 8
Google Code Jam 2010, Vòng 1B, bài Your Rank is Pure.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.