| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Google Code Jam 2022 - Goose, Goose, Ducks? | 35 | 14.0s | 1G |
| 2 | Google Code Jam 2022 - Schrödinger and Pavlov | 50 | 2.0s | 1G |
| 3 | Google Code Jam 2022 - Slide Parade | 35 | 12.5s | 1G |
| 4 | Google Code Jam 2022 - Triangles | 50 | 10.5s | 1G |
| 5 | Google Code Jam 2022 - Wonderland Chase | 30 | 10.0s | 1G |
Hội nghị Ngỗng quốc tế đầu tiên vừa kết thúc. Dù lẽ ra đây phải là một dịp vui, kết cục lại vừa ngọt ngào vừa cay đắng: ban tổ chức tìm thấy một tài liệu chứa kế hoạch chi tiết về một vụ thâm nhập của vịt. Giờ họ đang cố xác định nhóm thâm nhập trong số những người tham dự.
Tài liệu tìm được chứa danh sách \(M\) bộ ba số nguyên \((X_i,Y_i,C_i)\), nghĩa là các con vịt sẽ họp đúng \(C_i\) giây sau khi hội nghị bắt đầu tại điểm \((X_i,Y_i)\), nằm cách tâm sàn hội nghị \(X_i\) mét về phía đông và \(Y_i\) mét về phía bắc. Mỗi con ngỗng có thể có hoặc không có mặt tại đúng các điểm và thời điểm ấy, nhưng mọi con vịt chắc chắn đều có mặt.
Cả vịt lẫn ngỗng đều đi bộ với vận tốc tối đa một mét mỗi giây. Vì vậy, một người đang ở điểm \((x,y)\) tại thời điểm \(t\) có thể tới bất kỳ điểm dạng \((x+\Delta_x,y+\Delta_y)\) vào thời điểm \(t+\Delta_t\), miễn là
Vị trí của mỗi người tại thời điểm \(0\) có thể là một điểm bất kỳ, độc lập với những người khác.
Sau khi phát hiện tài liệu, cả nhóm tổ chức một phiên thẩm vấn nhằm nhận diện các con vịt. Trong phiên đó, những người tham dự lần lượt đưa ra các lời khai. Lời khai thứ \(j\) theo thứ tự được phát biểu do người \(A_j\) đưa ra; người này khẳng định rằng cả họ và người \(B_j\) đều ở điểm \((U_j,V_j)\) đúng \(D_j\) giây sau khi hội nghị bắt đầu. Các điểm trong lời khai có thể là hoặc không phải là nơi từng diễn ra cuộc họp vịt.
Lời khai của ngỗng luôn đúng, nhưng vịt có thể nói dối. Hơn nữa, vịt biết ai là vịt và ai là ngỗng. Để tránh dễ dàng bị bắt, vịt chỉ đưa ra những lời khai nhất quán với mọi lời khai mà ngỗng đã đưa ra trước đó. Lưu ý rằng các lời khai của ngỗng nhất quán với việc mọi con vịt đều có mặt ở tất cả các cuộc họp vịt.
Thông tin được cung cấp có thể không đủ để xác định tất cả các con vịt. Tuy nhiên, biết số vịt nhỏ nhất ít nhất cũng cho một cận dưới về mức độ hoạt động của vịt. Biết rằng có ít nhất một con vịt, hãy tìm số vịt nhỏ nhất có thể.
Nói một cách hình thức, một giả thuyết \(H\) là một cách phân hoạch tất cả người tham dự thành tập vịt (gọi là \(H\)-vịt) và tập ngỗng (gọi là \(H\)-ngỗng). \(H\) nhất quán với một tập lời khai \(S\) nếu tồn tại một quỹ đạo cho mỗi người, trên đó họ di chuyển với vận tốc không quá một mét mỗi giây, sao cho:
Một giả thuyết \(H\) là khả thi dưới tập lời khai \(S\) nếu:
Lưu ý rằng giả thuyết mà tập \(H\)-vịt chứa tất cả người tham dự luôn khả thi.
Hãy tìm kích thước nhỏ nhất của tập \(H\)-vịt trong mọi giả thuyết khả thi \(H\).
Dòng đầu chứa số bộ test \(T\). Mỗi bộ test bắt đầu bằng một dòng chứa ba số nguyên \(N,M,S\), lần lượt là số người tham dự, số cuộc họp vịt và số lời khai. Mỗi dòng trong \(M\) dòng tiếp theo mô tả một cuộc họp vịt khác nhau bằng ba số nguyên \(X_i,Y_i,C_i\): cuộc họp diễn ra tại điểm \((X_i,Y_i)\) đúng \(C_i\) giây sau khi hội nghị bắt đầu. Cuối cùng, mỗi dòng trong \(S\) dòng cuối mô tả một lời khai. Dòng thứ \(j\) mô tả lời khai thứ \(j\) được đưa ra bằng năm số nguyên \(A_j,B_j,U_j,V_j,D_j\): người \(A_j\) nói rằng cả họ và người \(B_j\) đều ở điểm \((U_j,V_j)\) đúng \(D_j\) giây sau khi hội nghị bắt đầu.
Với mỗi bộ test, in một dòng theo dạng Case #x: y, trong đó \(x\) là số thứ tự bộ test (bắt đầu từ \(1\)), còn \(y\) là số vịt nhỏ nhất có thể đã thâm nhập hội nghị.
| Phân nhóm | Điểm Google Code Jam | Tỷ lệ điểm của bài |
|---|---|---|
| Phân nhóm 1 | 11/35 | 31,43% |
| Phân nhóm 2 | 24/35 | 68,57% |
Ví dụ 1
2
2 1 2
1 2 3
1 2 1 1 1
2 1 2 2 2
4 2 4
4 3 10
-4 -3 20
1 3 4 3 11
2 4 0 0 16
3 1 6 3 9
4 2 0 0 16
Case #1: 1
Case #2: 2
Trong Test mẫu #1, giả thuyết người tham dự 1 là con vịt duy nhất là khả thi.
Trong Test mẫu #2, giả thuyết người tham dự 2 và 4 là hai con vịt duy nhất là khả thi. Lưu ý rằng có ít nhất một con vịt, nên giả thuyết mọi người tham dự đều là ngỗng không khả thi.
Google Code Jam 2022, Chung kết thế giới, bài Goose, Goose, Ducks?.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Câu chuyện, mọi tên gọi, nhân vật và sự việc được miêu tả trong đề bài này đều là hư cấu. Không có ý định ám chỉ bất kỳ người thật nào và cũng không nên suy diễn như vậy.
Năm 1935, một cuộc gặp giữa hai người đoạt giải Nobel đang tạo ra những kết quả đáng kinh ngạc. Schrödinger, một nhà vật lý nổi tiếng, mời Pavlov, một nhà sinh lý học nổi tiếng, đến xem các thí nghiệm của ông với những con mèo trong hộp. Pavlov dẫn theo chó của mình để tiếp tục nghiên cứu riêng, và sự kết hợp ấy đã tạo ra một tình huống hết sức thú vị.
Schrödinger có một hàng gồm \(N\) chiếc hộp. Một số hộp chắc chắn có mèo, một số hộp chắc chắn không có mèo, còn một số hộp có thể có hoặc không có mèo. Mỗi hộp chỉ đủ chỗ cho đúng một con mèo. Mỗi hộp cũng được trang bị một đường hầm lượng tử đặc biệt, cho phép con mèo trong hộp đi tới một hộp cụ thể khác nếu hộp đích đang trống. Các đường hầm chỉ hoạt động theo một chiều.
Mèo thường điềm tĩnh, im lặng và không dùng đường hầm trừ khi bị giật mình. Khi một vị khách thứ ba không báo trước bấm chuông, chó của Pavlov lập tức phấn khích rồi bắt đầu chạy và sủa. Chó xuất phát tại hộp \(1\) và chạy về phía hộp \(N\). Trên đường chạy, nó lần lượt đi sát từng hộp. Khi chó đi sát một hộp có mèo, con mèo trong hộp đó bị giật mình. Nó kiểm tra đường hầm hiện có và, nếu hộp đích trống, dùng đường hầm để chạy thoát. Nếu hộp đích đã bị chiếm, mèo ở nguyên trong hộp hiện tại. Cùng một con mèo có thể bị giật mình nhiều lần nếu nó chuyển tới một hộp mà chó sẽ đi qua sau đó; mỗi lần bị giật mình, nó lại hành động theo đúng cách trên (và ở mỗi lần sau chỉ dùng đường hầm mới hiện có tại hộp đang đứng).
Sau khi chó của Pavlov cuối cùng dừng ngay cạnh hộp cuối cùng, Pavlov hỏi Schrödinger trong hộp cuối có mèo hay không. Đúng với danh tiếng của mình, Schrödinger trả lời rằng ông không biết. Pavlov nhận thấy đáp án có thể phụ thuộc vào việc ban đầu các hộp chưa biết có mèo hay không. Hơn nữa, vì có \(k\) hộp chưa biết nên có \(2^k\) cấu hình ban đầu khả dĩ, mỗi cấu hình ứng với một cách kết hợp trạng thái của các hộp chưa biết. Pavlov nói với Schrödinger rằng họ nên tính xem có bao nhiêu trong số \(2^k\) cấu hình ban đầu ấy dẫn tới việc hộp cuối cùng có mèo. Bạn hãy thực hiện lại phép tính đó. Vì kết quả có thể rất lớn, chỉ cần in phần dư khi chia kết quả cho số nguyên tố \(10^9+7\) (\(1000000007\)).
Không có mèo, chó hay người đoạt giải Nobel nào bị tổn hại trong quá trình xây dựng đề bài này.
Dòng đầu tiên chứa số bộ test \(T\). Sau đó là \(T\) bộ test, mỗi bộ được mô tả bằng đúng ba dòng. Dòng đầu của một bộ test chứa số nguyên \(N\), số hộp trong thí nghiệm của Schrödinger. Các hộp được đánh số từ \(1\) đến \(N\) theo thứ tự mà chó của Pavlov đi qua. Dòng thứ hai chứa một chuỗi \(S\) gồm \(N\) ký tự. Ký tự thứ \(i\) của \(S\) (tính từ trái sang phải) biểu diễn nội dung hộp \(i\): chữ hoa C nếu hộp có mèo, dấu chấm . nếu hộp không có mèo, và dấu hỏi ? nếu chưa biết hộp có mèo hay không. Dòng thứ ba chứa \(N\) số nguyên \(B_1,B_2,\ldots,B_N\); với mọi \(i\), có một đường hầm đi ra từ hộp \(i\) và đi vào hộp \(B_i\).
Với mỗi bộ test, in một dòng theo dạng Case #x: y, trong đó \(x\) là số thứ tự bộ test (bắt đầu từ \(1\)), còn \(y\) là số cấu hình ban đầu khiến cuối cùng có một con mèo trong hộp cuối và con mèo ấy không thể thoát dù nghe tiếng sủa, lấy modulo số nguyên tố \(10^9+7\) (\(1000000007\)).
C, dấu chấm ., hoặc dấu hỏi ?.| Phân nhóm | Điểm Google Code Jam | Tỷ lệ điểm của bài |
|---|---|---|
| Phân nhóm 1 | 8/50 | 16% |
| Phân nhóm 2 | 42/50 | 84% |
Ví dụ 1
4
4
??.C
2 3 1 3
4
????
2 3 1 3
6
?.????
6 6 6 6 6 5
34
????????????????????????????????CC
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 33
Case #1: 1
Case #2: 2
Case #3: 15
Case #4: 294967268
Test mẫu #1 được minh họa trong đề bài. Có \(4\) cấu hình khả dĩ:
...C: chó chạy qua ba hộp đầu mà không làm thay đổi gì vì không có mèo ở đó. Khi nó tới hộp cuối, mèo nghe thấy và chạy sang hộp 3. Vì vậy cuối cùng hộp cuối không có mèo.C..C: khi chó sủa gần hộp 1, mèo bị giật mình và đi qua đường hầm tới hộp 2 đang trống. Cùng con mèo ấy lại bị giật mình khi chó sủa gần hộp 2 và đi tới hộp 3. Khi chó sủa cạnh hộp 3, mèo nghe thấy rồi quay về hộp 1. Vì thế, khi chó tới hộp 4 và con mèo còn lại nghe thấy, hộp 3 đang trống nên nó chạy thoát; cuối cùng hộp cuối trống..C.C: trường hợp này rất giống trường hợp trước. Sau khi chó đi qua hộp đầu mà không có gì xảy ra, trạng thái giống như ở trường hợp trên, nên kết quả cuối cùng cũng vậy: hộp cuối trống.CC.C: mèo ở hộp đầu không thể thoát khi nghe tiếng chó nên vẫn ở hộp 1. Sau đó, mèo hộp 2 bị giật mình và chạy sang hộp 3, tạo trạng thái C.CC. Khi chó tới hộp 3, mèo ở đó không thể chạy sang hộp 1 nên trạng thái giữ nguyên. Cuối cùng, khi chó tới hộp cuối, mèo ở đó không thể thoát vì lần này hộp 3 đã bị chiếm. Do đó, sau khi chó kết thúc hành trình, hộp cuối vẫn có mèo.Trong \(4\) khả năng, chỉ có \(1\) khả năng (khả năng cuối) kết thúc với một con mèo ở hộp cuối, nên đáp án là \(1\).
Trong Test mẫu #2, các đường hầm được bố trí giống Test mẫu #1. Vì không có đường hầm nào đi vào hộp cuối, những cấu hình ban đầu không có mèo ở hộp cuối cũng không thể kết thúc với mèo ở đó, nên không cần đếm chúng. Ta còn \(8\) cấu hình: \(4\) cấu hình đã xét ở Test mẫu #1, trong đó chỉ \(1\) cấu hình kết thúc với mèo ở hộp cuối; và \(4\) cấu hình còn lại là ..CC, C.CC, .CCC, CCCC. Trong bốn cấu hình bổ sung này, chỉ cấu hình cuối cùng để lại mèo ở hộp cuối. Tổng cộng có \(2\) cấu hình.
Trong Test mẫu #3, để một con mèo vẫn ở hộp cuối sau khi chó sủa gần nó, lúc ấy cả hộp cuối lẫn hộp 5 đều phải bị chiếm (nếu không thì hoặc hộp cuối không có mèo, hoặc mèo sẽ chạy sang hộp 5). Vì không có đường hầm nào đi vào hộp 5 nên một con mèo phải ở đó từ đầu. Chỉ cần có thêm một con mèo ở bất kỳ hộp nào khác, hộp 6 sẽ được chiếm (hoặc vẫn bị chiếm) trước khi mèo ở hộp 5 có cơ hội thoát, nên mọi cấu hình như vậy đều kết thúc với mèo ở hộp cuối. Như đã lập luận, chỉ một con mèo là chưa đủ. Vậy cần đếm số cấu hình có mèo ở hộp 5 và có ít nhất một con mèo khác. Có \(2^4\) cấu hình có mèo ở hộp 5, trong đó chỉ \(1\) cấu hình không có mèo nào khác, nên đáp án là \(2^4-1=15\).
Trong Test mẫu #4, với cả \(2^k\) cách mà \(k\) hộp chưa biết có thể tồn tại mèo, cuối cùng đều còn một con mèo ở hộp cuối.
Google Code Jam 2022, Chung kết thế giới, bài Schrödinger and Pavlov.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Gooli là một công ty khổng lồ sở hữu \(B\) tòa nhà trong một vùng đồi núi, được đánh số từ \(1\) đến \(B\). Sáu năm trước, Gooli đã xây các đường trượt để nhân viên đi từ tòa nhà này sang tòa nhà khác. Mỗi đường trượt cho phép đi từ tòa nhà đầu đến tòa nhà cuối của nó, nhưng không cho phép đi theo chiều ngược lại. Tổng giám đốc Gooli rất tự hào về các đường trượt và muốn tổ chức một cuộc diễu hành qua chúng. Bà giao cho Melek, Trưởng bộ phận Giao thông kiêm người đam mê giải bài toán của Gooli, thiết kế lộ trình diễu hành.
Bà đặt ra các yêu cầu sau cho lộ trình:
Cho sơ đồ các tòa nhà và đường trượt, hãy giúp Melek tìm một lộ trình thỏa tất cả yêu cầu của tổng giám đốc nếu lộ trình đó tồn tại.
Dòng đầu tiên chứa số bộ test \(T\). Sau đó là \(T\) bộ test. Mỗi bộ test bắt đầu bằng một dòng chứa hai số nguyên \(B\) và \(S\), lần lượt là số tòa nhà và số đường trượt.
Tiếp theo là \(S\) dòng. Dòng thứ \(i\) chứa hai số nguyên \(U_i\) và \(V_i\), cho biết đường trượt thứ \(i\) đi từ tòa nhà \(U_i\) đến tòa nhà \(V_i\).
Với mỗi bộ test, in một dòng Case #x: y, trong đó \(x\) là số thứ tự bộ test (bắt đầu từ \(1\)). Nếu không có lộ trình thỏa mọi yêu cầu, \(y\) phải là IMPOSSIBLE. Nếu có, \(y\) phải là một số nguyên trong đoạn từ \(S+1\) đến \(10^6+1\), kể cả hai đầu, biểu diễn số tòa nhà trong một lộ trình mà bạn muốn đưa ra.
Trong trường hợp thứ hai, in thêm một dòng chứa \(y\) số nguyên \(z_1\ z_2\ \dots\ z_y\), trong đó \(z_j\) là tòa nhà thứ \(j\) trên lộ trình đề xuất. Lưu ý rằng \(z_1=z_y=1\), và mỗi tòa nhà phải xuất hiện cùng một số lần trong các \(z_j\), ngoại trừ tòa nhà \(1\) xuất hiện nhiều hơn đúng một lầ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 | 11/35 | 31,43% |
| Test Set 2 | 24/35 | 68,57% |
Ví dụ 1
5
2 2
2 1
1 2
3 4
2 3
1 2
3 2
1 3
3 6
1 2
1 3
2 1
2 3
3 1
3 2
3 4
1 2
2 1
1 3
3 1
4 6
1 2
1 4
2 3
3 2
3 4
4 1
Case #1: 7
1 2 1 2 1 2 1
Case #2: IMPOSSIBLE
Case #3: 7
1 2 3 1 3 2 1
Case #4: IMPOSSIBLE
Case #5: 9
1 4 1 2 3 2 3 4 1
Trong Ví dụ #1, một lộ trình khác cũng được chấp nhận là đi từ tòa nhà \(1\) đến tòa nhà \(2\) rồi quay lại, tổng cộng \(2\) bước.
Trong Ví dụ #2, không có đường trượt nào dẫn đến tòa nhà \(1\), nên không thể tồn tại cuộc diễu hành hợp lệ.
Trong Ví dụ #3, lộ trình ở đầu ra mẫu đi qua mỗi tòa nhà hai lần.
Ví dụ #4 được minh họa dưới đây.
Ví dụ #5 chính là hình minh họa trong đề bài. Trong lộ trình của đầu ra mẫu, các đường trượt từ \(2\) đến \(3\) và từ \(4\) đến \(1\) được dùng hai lần, còn mọi đường trượt khác chỉ được dùng một lần.
Google Code Jam 2022, Chung kết thế giới, bài Slide Parade.
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ạn được cho một tập \(P\) gồm \(N\) điểm phân biệt trên mặt phẳng hai chiều. Hãy tìm một tập tam giác có số lượng lớn nhất sao cho:
Ví dụ, tập tam giác dưới đây thỏa định nghĩa trên.
Ngược lại, mỗi cặp gồm một tam giác vàng và một tam giác đỏ trong hình dưới đây đều không thỏa định nghĩa.
Dòng đầu tiên chứa số bộ test \(T\). Sau đó là \(T\) bộ test. Mỗi bộ test bắt đầu bằng một dòng chứa số nguyên \(N\). Tiếp theo là \(N\) dòng; dòng thứ \(i\) chứa hai số nguyên \(X_i\) và \(Y_i\), là tọa độ của điểm thứ \(i\).
Với mỗi bộ test, in một dòng Case #x: y, trong đó \(x\) là số thứ tự bộ test (bắt đầu từ \(1\)) và \(y\) là số tam giác lớn nhất của một tập thỏa các tính chất yêu cầu. Sau đó in thêm \(y\) dòng. Dòng thứ \(j\) chứa \(p_j\ q_j\ r_j\), cho biết tam giác thứ \(j\) trong tập đề xuất dùng các điểm thứ \(p_j\), \(q_j\) và \(r_j\) của dữ liệu vào làm đỉnh. Các điểm đầu vào được đánh số từ \(1\).
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 | 8/50 | 16% |
| Test Set 2 | 42/50 | 84% |
Ví dụ 1
3
9
8 2
10 2
2 0
0 5
2 3
10 4
10 0
8 3
2 4
7
0 0
0 3
3 0
0 1
1 0
1 1
2 2
3
0 0
0 1
0 2
Case #1: 3
3 4 5
1 7 9
6 2 8
Case #2: 2
2 3 1
6 5 4
Case #3: 0
Google Code Jam 2022, Chung kết thế giới, bài Triangles.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Alice bị mắc kẹt trong mê cung Wonderland và đang bị Nữ hoàng Cơ cùng người truyền lệnh của bà truy đuổi! Mê cung gồm \(J\) giao lộ được đánh số từ \(1\) đến \(J\), nối với nhau bởi \(C\) hành lang hai chiều.
Alice và Nữ hoàng Cơ luân phiên di chuyển; cả hai luôn biết vị trí của người kia. Trong một lượt, mỗi người có thể đứng yên tại giao lộ hiện tại hoặc đi đến một giao lộ khác được nối với nó bằng hành lang.
Tuy nhiên, người truyền lệnh luôn công bố trước nước đi tiếp theo của Nữ hoàng. Điều đó có nghĩa là trước khi bất kỳ ai di chuyển, ông công bố nước đi đầu tiên của Nữ hoàng. Sau đó Alice đi trước. Mỗi khi Nữ hoàng đi, bà phải tuân theo thông báo trước đó, rồi quyết định nước đi kế tiếp để người truyền lệnh công bố. Alice nghe được mọi thông báo, nên luôn biết nước đi tiếp theo của Nữ hoàng trước khi chọn nước đi của mình.
Nếu Alice và Nữ hoàng ở cùng một giao lộ sau khi một trong hai người di chuyển, Alice bị bắt. Nếu không, cuộc truy đuổi tiếp tục. Sau tổng cộng \(10^9\) nước đi, một nửa của Alice và một nửa của Nữ hoàng, nếu họ vẫn không ở cùng giao lộ thì Nữ hoàng sẽ bỏ cuộc và Alice được an toàn.
Alice chọn nước đi tối ưu để trốn thoát. Nếu không thể thoát, cô chọn cách tối đa hóa tổng số nước đi trước khi bị bắt. Nữ hoàng chọn tối ưu để bắt Alice trong ít nước đi nhất có thể.
Cho sơ đồ mê cung và vị trí ban đầu của Nữ hoàng lẫn Alice, hãy xác định Alice có bị bắt hay không và, nếu có, sau bao nhiêu nước đi.
Dòng đầu tiên chứa số bộ test \(T\). Sau đó là \(T\) bộ test. Mỗi bộ test bắt đầu bằng một dòng chứa bốn số nguyên \(J,C,A,Q\): số giao lộ, số hành lang, giao lộ ban đầu của Alice và giao lộ ban đầu của Nữ hoàng.
Tiếp theo là \(C\) dòng. Dòng thứ \(i\) chứa hai số nguyên \(U_i,V_i\), cho biết hành lang thứ \(i\) nối hai chiều hai giao lộ \(U_i\) và \(V_i\).
Với mỗi bộ test, in một dòng Case #x: y, trong đó \(x\) là số thứ tự bộ test (bắt đầu từ \(1\)). Nếu Alice có thể tránh bị bắt trong tổng cộng \(10^9\) nước đi, \(y\) là SAFE. Nếu không, \(y\) là tổng số nước đi của cả Alice và Nữ hoàng cho đến khi Nữ hoàng bắt được Alice.
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 | 8/30 | 26,67% |
| Test Set 2 | 22/30 | 73,33% |
Ví dụ 1
4
5 5 5 1
1 2
1 3
2 4
3 4
4 5
5 5 5 2
1 2
1 3
2 4
3 4
4 5
3 1 2 3
1 3
2 1 1 2
1 2
Case #1: SAFE
Case #2: 4
Case #3: SAFE
Case #4: 2
Ví dụ #1 chính là hình trong đề bài. Nước đi đầu tiên tối ưu của Alice là đến giao lộ \(4\).
Ví dụ #2 giống Ví dụ #1, nhưng Nữ hoàng bắt đầu ở giao lộ \(2\). Nữ hoàng có thể bắt Alice bằng cách đầu tiên thông báo sẽ đi đến giao lộ \(4\). Nếu Alice cũng đi đến giao lộ \(4\), cô bị bắt sau \(2\) nước đi. Alice có thể tránh bị bắt thêm \(2\) nước đi bằng cách đứng yên và chờ đến khi Nữ hoàng đi đến giao lộ \(5\), nơi Alice đang đứng.
Trong Ví dụ #3, dù làm gì Nữ hoàng cũng không thể đến chỗ Alice.
Trong Ví dụ #4, Nữ hoàng có thể bắt đầu bằng cách thông báo rằng bà sẽ đi đến giao lộ hiện tại của Alice. Alice phải đi trước lúc đó. Nếu Alice đi đến nơi Nữ hoàng đang đứng, cô bị bắt ngay; nếu Alice đứng yên, cô bị bắt khi Nữ hoàng di chuyển. Lựa chọn thứ hai tốt hơn vì cần tổng cộng \(2\) nước đi của Alice và Nữ hoàng thay vì \(1\).
Google Code Jam 2022, Chung kết thế giới, bài Wonderland Chase.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.