Google Code Jam 2017 - Stable Neigh-bors
Xem PDFBạn may mắn sở hữu \(N\) chú kỳ lân. Bờm của mỗi chú có một hoặc hai trong ba loại lông: đỏ, vàng và xanh dương. Màu nhìn thấy của bờm phụ thuộc chính xác vào các loại lông có trong đó:
- Bờm chỉ có một màu lông sẽ mang chính màu ấy; chẳng hạn chỉ có lông xanh dương thì bờm xanh dương.
- Bờm có lông đỏ và vàng nhìn thành màu cam.
- Bờm có lông vàng và xanh dương nhìn thành màu xanh lá.
- Bờm có lông đỏ và xanh dương nhìn thành màu tím.
Bạn có lần lượt \(R,O,Y,G,B,V\) chú kỳ lân với bờm đỏ, cam, vàng, xanh lá, xanh dương và tím.
Bạn vừa xây một chuồng tròn gồm \(N\) ô xếp thành vòng, mỗi ô kề đúng hai ô khác. Bạn muốn đặt đúng một kỳ lân vào mỗi ô. Tuy nhiên, kỳ lân cần cảm thấy mình hiếm và đặc biệt, nên không chú nào được đứng cạnh một chú khác có chung ít nhất một màu lông trong bờm. Ví dụ, bờm cam không thể kề bờm tím vì cả hai đều có lông đỏ. Tương tự, bờm xanh lá không thể kề bờm vàng vì cả hai có lông vàng.
Có thể xếp tất cả kỳ lân hay không? Nếu có, hãy đưa ra một cách xếp.
Dữ liệu vào
Dòng đầu chứa số lượng bộ test \(T\). Mỗi bộ test gồm một dòng chứa bảy số nguyên \(N,R,O,Y,G,B,V\).
Dữ liệu ra
Với mỗi bộ test, in Case #x: y, trong đó x là số thứ tự bộ test (bắt đầu từ 1). Nếu không thể xếp, y là IMPOSSIBLE; nếu có thể, y là chuỗi \(N\) ký tự mô tả các ô chuồng, bắt đầu ở một điểm tùy chọn và đọc theo chiều kim đồng hồ quanh vòng. Dùng R, O, Y, G, B, V để biểu diễn kỳ lân có bờm tương ứng. Cách xếp phải tuân thủ mọi quy tắc trên.
Nếu có nhiều cách xếp, có thể in bất kỳ cách nào.
Ràng buộc
- \(1\le T\le100\); \(3\le N\le1000\).
- \(R+O+Y+G+B+V=N\).
- \(0\le Z\) với mọi \(Z\in\{R,O,Y,G,B,V\}\).
Phân nhóm
- Test Set 1 (Visible): \(O=G=V=0\); mỗi kỳ lân chỉ có một màu lông trong bờm.
- Test Set 2 (Hidden): không có hạn chế thêm; mỗi kỳ lân có thể có một hoặc hai màu lông trong bờm.
Đ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 | 13/35 | 37,14% |
| Test Set 2 | 22/35 | 62,86% |
Ví dụ
Ví dụ 1
Input
4
6 2 0 2 0 2 0
3 1 0 2 0 0 0
6 2 0 1 1 2 0
4 0 0 2 0 0 2
Output
Case #1: RYBRBY
Case #2: IMPOSSIBLE
Case #3: YBRGRB
Case #4: YVYV
Note
Hai bộ test mẫu cuối không thể xuất hiện trong Test Set 1.
Với bộ #1 có nhiều đáp án; một đáp án khác là BYBRYR. BYRYRB không hợp lệ: chuồng tạo thành một vòng nên ô đầu kề ô cuối.
Với bộ #2 chỉ có ba ô và mỗi ô kề cả hai ô còn lại, nên hai kỳ lân bờm vàng buộc phải kề nhau, điều không được phép.
Với bộ #3, xếp theo mẫu màu logo Google (BRYBGR) không hợp lệ vì một kỳ lân bờm xanh dương sẽ kề một kỳ lân bờm xanh lá, mà cả hai bờm đều có lông xanh dương.
Với bộ #4, không hai kỳ lân bờm vàng nào được kề nhau và cũng không hai kỳ lân bờm tím nào được kề nhau.
Nguồn
Google Code Jam 2017, Vòng 1B, bài Stable Neigh-bors.
Nguồn chính thức trên Google Coding Competitions Archive, phát hành theo giấy phép Apache-2.0.
Kỳ thi:
- Google Code Jam 2017 - Round 1B (22 Tháng tư, 2017)
Bình luận