| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Google Code Jam 2008 - Apocalypse Soon | 22 | 1.0s | 1G |
| 2 | Google Code Jam 2008 - Millionaire | 29 | 2.0s | 1G |
| 3 | Google Code Jam 2008 - Modern Art Plagiarism | 32 | 4.0s | 1G |
| 4 | Google Code Jam 2008 - What are Birds? | 17 | 1.0s | 1G |
Ôi không! Sự cân bằng chính trị mỏng manh của thế giới cuối cùng đã sụp đổ, và mọi quốc gia đều đã tuyên chiến với nhau. Bạn đã cảnh báo bất cứ ai sẵn lòng lắng nghe rằng điều này sẽ xảy ra, nhưng họ có chú ý không? Ha! Bây giờ điều duy nhất bạn có thể hy vọng là sống sót càng lâu càng tốt.
May mắn thay (có thể coi là vậy), các trung tâm công nghiệp của mọi quốc gia đều đã bị ném bom nguyên tử, vì vậy phương thức tấn công duy nhất còn lại là tung ra hết đợt lính nghĩa vụ này đến đợt lính nghĩa vụ khác vào nhau. Điều này giới hạn mỗi quốc gia chỉ có thể tấn công các nước láng giềng trực tiếp của mình. Thế giới là một lưới \(R \times C\) với \(R\) hàng, được đánh số từ 1 ở cực Bắc đến \(R\) ở cực Nam, và \(C\) cột, được đánh số từ 1 ở cực Tây đến \(C\) ở cực Đông. Mỗi quốc gia chiếm một ô của lưới, có nghĩa là mỗi quốc gia có thể tiếp cận tối đa 4 quốc gia láng giềng liền kề.
Mọi quốc gia bắt đầu với một giá trị sức mạnh cụ thể mà ai cũng biết. Họ không có khái niệm về chiến lược nâng cao, vì vậy vào đầu mỗi ngày, họ sẽ chỉ đơn giản chọn người hàng xóm mạnh nhất của mình (ưu tiên quốc gia ở phía Bắc nhất, sau đó là phía Tây nhất nếu có kết quả hòa) và tấn công họ bằng một đội quân. Đội quân sẽ có sức mạnh bằng với sức mạnh hiện tại \(S\) của quốc gia đó; vào cuối ngày, nó sẽ làm giảm sức mạnh của người hàng xóm đó đi một lượng là \(S\). Một quốc gia có sức mạnh chạm mức 0 sẽ bị tiêu diệt. Lưu ý rằng tất cả các quốc gia tấn công cùng một lúc; sức mạnh của một đội quân là như nhau bất kể quốc gia đó có bị tấn công trong ngày hôm đó hay không.
Quốc gia của bạn nằm ở \((c, r)\), tại cột \(c\) và hàng \(r\). May mắn thay, quốc gia của bạn đang nghe theo lời khuyên của bạn, vì vậy bạn không cần phải tuân theo chiến lược điên rồ này. Bạn có thể chọn tấn công bất kỳ người hàng xóm nào của mình vào một ngày nhất định (hoặc không làm gì cả). Tuy nhiên, bạn không thể tấn công nhiều hàng xóm cùng lúc, hoặc tấn công với một đội quân có sức mạnh ít hơn sức mạnh tối đa hiện có.
Hãy xác định số ngày tối đa bạn có thể sống sót.
Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ test, T. T bộ test tiếp theo. Dòng đầu tiên của mỗi bộ test chứa bốn số nguyên, C, R, c, và r. R dòng tiếp theo, mỗi dòng chứa C số nguyên, cho biết sức mạnh bắt đầu \(S_{c_i,r_i}\) của quốc gia ở cột ci và hàng ri. Nó có thể bằng 0, cho biết quốc gia đó đã bị tiêu diệt. Sức mạnh bắt đầu của quốc gia bạn sẽ không phải là 0.
Với mỗi bộ test, hãy xuất một dòng chứa "Case #A: " theo sau 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 | 8/22 | 36,36% |
| Test Set 2 | 14/22 | 63,64% |
Ví dụ 1
2
3 3 2 2
2 3 2
1 7 1
2 1 2
4 3 2 1
1 2 2 0
10 8 5 10
10 2 9 10
Case #1: forever
Case #2: 3 day(s)
Google Code Jam 2008, Vòng bán kết châu Á - Thái Bình Dương, bài Apocalypse Soon.
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 mời tham gia chương trình truyền hình nổi tiếng "Bạn có muốn trở thành triệu phú?". Tất nhiên là bạn muốn rồi!
Quy tắc của trò chơi rất đơn giản:
Cho \(M\), \(P\) và \(X\), hãy xác định xác suất bạn giành được ít nhất \(1.000.000\) đô la nếu bạn chơi một cách tối ưu (tức là bạn chơi sao cho tối đa hóa cơ hội trở thành triệu phú của mình).
Dòng đầu tiên của dữ liệu vào cho biết số lượng bộ test, \(N\).
Mỗi dòng trong \(N\) dòng tiếp theo có định dạng "\(M\) \(P\) \(X\)", trong đó:
Với mỗi bộ test, hãy xuất một dòng chứa "Case #\(X\): \(Y\)", trong đó:
Các câu trả lời có sai số tương đối hoặc tuyệt đối không quá \(10^{-6}\) sẽ được coi là chính xác.
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/29 | 44,83% |
| Test Set 2 | 16/29 | 55,17% |
Ví dụ 1
2
1 0.5 500000
3 0.75 600000
Case #1: 0.500000
Case #2: 0.843750
Trong trường hợp đầu tiên, cách duy nhất để đạt được \(1.000.000\) đô la là đặt cược tất cả trong vòng duy nhất đó.
Trong trường hợp thứ hai, bạn có thể chơi sao cho vẫn có thể đạt được \(1.000.000\) đô la ngay cả khi thua một lần đặt cược. Dưới đây là một cách thực hiện:
Google Code Jam 2008, Vòng bán kết châu Á - Thái Bình Dương, bài Millionaire.
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ó hình ảnh của hai tác phẩm điêu khắc. Các tác phẩm điêu khắc bao gồm nhiều quả cầu kim loại đặc và một số ống cao su nối các cặp quả cầu. Các ống trong mỗi tác phẩm được kết nối theo cách mà đối với bất kỳ cặp quả cầu nào, đều có đúng một đường đi men theo một chuỗi các ống (không lặp lại bất kỳ ống nào) giữa hai quả cầu đó. Tất cả các quả cầu đều có cùng bán kính và tất cả các ống đều có cùng chiều dài.
Bạn nghi ngờ rằng tác phẩm điêu khắc nhỏ hơn trong số hai tác phẩm thực chất được tạo ra bằng cách đơn giản là loại bỏ một số quả cầu và ống từ tác phẩm lớn hơn. Bạn muốn viết một chương trình để kiểm tra xem điều này có khả thi hay không.
Dữ liệu vào sẽ chứa một số bộ test. Một tác phẩm điêu khắc được mô tả bằng cách đánh số các quả cầu liên tiếp từ 1 và liệt kê các cặp quả cầu được nối với nhau bằng ống. Việc đánh số được chọn độc lập cho mỗi tác phẩm điêu khắc.
Đối với mỗi bộ test:
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/32 | 21,88% |
| Test Set 2 | 25/32 | 78,12% |
Ví dụ 1
2
5
1 2
2 3
3 4
4 5
4
1 2
1 3
1 4
5
1 2
1 3
1 4
4 5
4
1 2
2 3
3 4
Case #1: NO
Case #2: YES
Trong trường hợp đầu tiên, tác phẩm điêu khắc lớn có năm quả cầu nối thành một đường thẳng, và tác phẩm điêu khắc nhỏ có một quả cầu có ba quả cầu khác nối với nó. Không có cách nào để tác phẩm điêu khắc nhỏ hơn có thể được tạo ra bằng cách loại bỏ các phần từ tác phẩm lớn hơn.
Trong trường hợp thứ hai, tác phẩm điêu khắc nhỏ là bốn quả cầu nối thành một đường thẳng. Những quả cầu này có thể khớp với các quả cầu của tác phẩm điêu khắc lớn theo thứ tự 2-1-4-5.
Google Code Jam 2008, Vòng bán kết châu Á - Thái Bình Dương, bài Modern Art Plagiarism.
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 đang nghiên cứu các loài động vật trong một khu rừng và cố gắng xác định loài nào là chim và loài nào không phải.
Bạn thực hiện việc này bằng cách đo hai chỉ số của mỗi con vật – chiều cao và cân nặng của chúng. Để một con vật là chim, chiều cao của nó cần nằm trong một khoảng nhất định và cân nặng của nó cần nằm trong một khoảng khác, nhưng bạn không chắc chắn các khoảng chiều cao và cân nặng đó là gì. Bạn cũng biết rằng mọi con vật thỏa mãn các khoảng này đều là chim.
Bạn đã mang một số con vật mà bạn đo được cho các nhà sinh vật học xem, và họ đã cho bạn biết con nào là chim và con nào không. Điều này đã cung cấp cho bạn một số thông tin về các khoảng chiều cao và cân nặng của chim. Đối với những con vật còn lại, chương trình của bạn nên xác định xem chúng chắc chắn là chim, chắc chắn không phải chim, hoặc bạn không thể biết được từ thông tin hiện có.
Một dòng chứa một số nguyên C, số lượng bộ dữ liệu kiểm tra.
Sau đó, với mỗi bộ dữ liệu trong số C bộ:
Với mỗi bộ dữ liệu:
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/17 | 29,41% |
| Test Set 2 | 12/17 | 70,59% |
Ví dụ 1
3
5
1000 1000 BIRD
2000 1000 BIRD
2000 2000 BIRD
1000 2000 BIRD
1500 2010 NOT BIRD
3
1500 1500
900 900
1400 2020
3
500 700 NOT BIRD
501 700 BIRD
502 700 NOT BIRD
2
501 600
502 501
1
100 100 NOT BIRD
3
107 93
86 70
110 115
Case #1:
BIRD
UNKNOWN
NOT BIRD
Case #2:
UNKNOWN
NOT BIRD
Case #3:
UNKNOWN
UNKNOWN
UNKNOWN
Giải thích ví dụ:
Google Code Jam 2008, Vòng bán kết châu Á - Thái Bình Dương, bài What are Birds?.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.