Ôn thi DHBB 11-07-2023 Đề 2

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

ÔN THI DHBB NGÀY 11/07/2023

Môn: TIN HỌC (Đề số 2)


Bài 1. Đường đi dài (7 điểm) (tệp chương trình: path.pas hoặc path.cpp)
An tìm thấy một mê cung gồm 𝑛 + 1 phòng được đánh số từ 1 đến 𝑛 + 1. Ban đầu, An ở trong phòng
đầu tiên và để đi được ra khỏi mê cung, anh ta cần đi đến phòng thứ 𝑛 + 1.
Mê cung được tổ chức như sau. Mỗi phòng của mê cung có hai cửa một chiều. Với mỗi phòng 𝑖
(1 ≤ 𝑖 ≤ 𝑛), cửa thứ nhất để đi từ nó tới phòng 𝑖 + 1 và cửa thứ hai để đi từ nó tới phòng 𝑝𝑖 , ở đó 1 ≤
𝑝𝑖 ≤ 𝑖.
Để không bị lạc, An quyết định hành động như sau:
• Mỗi lần An vào một phòng, anh ta vẽ một dấu gạch chéo trên trần nhà. Ban đầu, An vẽ một dấu
gạch chéo trên trần của phòng 1;
• Giả sử An đang ở trong phòng 𝑖 và anh ta đã vẽ một dấu gạch chéo trên trần của phòng này. Sau
đó, nếu trần của phòng này chứa một số lẻ dấu gạch chéo, An sẽ sử dụng cửa thứ hai (nó dẫn đến
phòng 𝑝𝑖 ), nếu không An sẽ sử dụng cửa thứ nhất.
Hãy giúp An xác định số lần anh ta cần sử dụng cửa để đi tới được phòng 𝑛 + 1 cuối cùng. Số này có
thể rất lớn, vì vậy bạn cần đưa ra số dư của nó khi chia cho 109 + 7.
Dữ liệu: Vào từ tệp văn bản path.inp. Dòng đầu tiên chứa số nguyên 𝑛 (1 ≤ 𝑛 ≤ 105 ). Dòng thứ
hai chứa 𝑛 số nguyên 𝑝𝑖 (1 ≤ 𝑝𝑖 ≤ 𝑖).
Kết quả: Ghi ra tệp văn bản path.out một số là số dư của số lần An sử dụng cửa để đi ra ngoài mê
cung khi chia cho 109 + 7.
Ví dụ:
path.inp path.out
2 4
1 2
4 20
1 1 2 3
5 62
1 1 1 1 1
Subtasks:
• Subtask 1 (25%): 1 ≤ 𝑛 ≤ 20;
• Subtask 2 (25%): 1 ≤ 𝑛 ≤ 102 ;
• Subtask 3 (25%): 1 ≤ 𝑛 ≤ 103 ;
• Subtask 4 (25%): Không có thêm ràng buộc nào.

Trang 1/3
Bài 2. Trò chơi trên bảng (7 điểm) (tệp chương trình: game.pas hoặc game.cpp)
Alice và Bob đang chơi một trò chơi. Trong trò chơi của họ, bảng bao gồm 𝑤 cột có chiều cao ℎ và mục
tiêu là người chơi đầu tiên hoàn thành một hàng 𝑘 ô có màu giống nhau, theo chiều dọc hoặc chiều ngang
hoặc đường chéo. Hai người chơi luân phiên thả các quân của họ vào một trong các cột, với Alice sử
dụng quân màu đỏ và đi đầu tiên và Bob sử dụng quân màu vàng và đi thứ hai. Khi một quân bị rơi, nó
sẽ rơi xuống vị trí cuối cùng có sẵn, làm cho vị trí đó không còn nữa. Khi một cột có ℎ quân, cột đó sẽ
đầy và người chơi không thể thả quân ở đó nữa.

Hình vẽ hiển thị trạng thái của trò chơi sau 0, 3, 8 và 12 nước đi trong ví dụ đầu tiên ở dưới.
Vì Alice và Bob thấy khá khó khăn để theo dõi điều kiện chiến thắng, vì vậy họ cứ tiếp tục chơi cho đến
khi bảng hoàn toàn được lấp đầy bởi các quân. Họ ghi lại nhật ký các nước đi và yêu cầu bạn cho biết ai
đã thắng trò chơi và ở lượt nào. Nếu không người chơi nào hoàn thành một hàng, trò chơi sẽ kết thúc
hòa, bạn hãy đưa ra thông báo đó.
Dữ liệu: Vào từ tệp văn bản game.inp. Dòng đầu tiên chứa ba số nguyên ℎ, 𝑤 và 𝑘
(ℎ, 𝑤 ≥ 1; ℎ. 𝑤 ≤ 250000; 1 ≤ 𝑘 ≤ 𝑚𝑎𝑥(ℎ, 𝑤)). Các cột được đánh số từ 1 đến 𝑤. Dòng thứ hai chứa
ℎ. 𝑤 số nguyên 𝑎1 , 𝑎2 , … , 𝑎ℎ.𝑤 (1 ≤ 𝑎𝑖 ≤ 𝑤), ở đó 𝑎𝑖 là chỉ số cột mà quân thứ 𝑖 được thả xuống. Các
chỉ số lẻ tương ứng với nước đi của Alice và các chỉ số chẵn tương ứng với nước đi của Bob. Mỗi cột
xuất hiện đúng ℎ lần trong danh sách này.
Kết quả: Ghi ra tệp văn bản game.out người chiến thắng trong trò chơi (‘A’ cho Alice hoặc ‘B’ cho
Bob), sau đó là số nước đi cần thiết để quyết định người chiến thắng. Nếu trò chơi kết thúc hòa thì ghi
ra ‘D’.
Ví dụ:
game.inp game.out
4 3 2 A 3
1 1 2 3 3 2 2 1 1 2 3 3
4 3 3 B 8
1 1 2 3 3 2 2 1 1 2 3 3
4 3 4 D
1 1 2 3 3 2 2 1 1 2 3 3
Subtasks:
• Subtask 1 (50%): 1 ≤ ℎ, 𝑤, 𝑘 ≤ 103 ;
• Subtask 2 (50%): Không có thêm ràng buộc nào.

Trang 2/3
Bài 3. Màu sắc trên cây (6 điểm) (tệp chương trình: color.pas hoặc color.cpp)
Cho một đồ thị cây có 𝑁 đỉnh được đánh số từ 1 đến 𝑁 và gốc của cây là đỉnh 1. Mỗi đỉnh này ban đầu
được tô màu bằng một trong 𝑁 màu được đánh số từ 1 đến 𝑁 (một số đỉnh có thể có cùng màu). Bạn
nhận được 𝑄 truy vấn thuộc một trong ba loại sau:
• “1 𝑢 𝑣 𝑐”: Tô màu tất cả các đỉnh của đường đi từ 𝑢 đến 𝑣 bằng màu 𝑐 (1 ≤ 𝑢, 𝑣, 𝑐 ≤ 𝑁);
• “2 𝑢 𝑐”: Tô màu tất cả các đỉnh trong cây con gốc 𝑢 bằng màu 𝑐 (1 ≤ 𝑢, 𝑐 ≤ 𝑁). Cây con gốc 𝑢
bao gồm 𝑢 và tất cả các đỉnh mà đường đi từ nó đến gốc của cây (đỉnh 1) đi qua 𝑢;
• “3 𝑢 𝑣”: Tìm số lần thay đổi màu của đường đi từ 𝑢 đến 𝑣 (1 ≤ 𝑢, 𝑣 ≤ 𝑁; nếu 𝑢 = 𝑣 thì câu trả
lời là 0). Cụ thể, giả sử đường đi từ 𝑢 đến 𝑣 là 𝑢 = 𝑝1 , 𝑝2 , … , 𝑝𝑘 = 𝑣, khi đó câu trả lời cho truy
vấn là số các giá trị 𝑗 (1 ≤ 𝑗 < 𝑘) sao cho màu của 𝑝𝑗 và 𝑝𝑗+1 khác nhau.
Bạn hãy đưa ra câu trả lời cho các truy vấn loại thứ 3.
Dữ liệu: Vào từ tệp văn bản color.inp. Dòng đầu tiên chứa số nguyên 𝑁 (2 ≤ 𝑁 ≤ 105 ) là số đỉnh
của đồ thị cây. Dòng thứ 𝑖 trong 𝑁 − 1 dòng tiếp theo chứa hai số nguyên 𝑎𝑖 và 𝑏𝑖 (1 ≤ 𝑎𝑖 , 𝑏𝑖 ≤ 𝑁) mô
tả một cạnh nối hai đỉnh 𝑎𝑖 và 𝑏𝑖 . Dòng tiếp theo chứa 𝑁 số nguyên 𝑠1 , 𝑠2 , … , 𝑠𝑁 , trong đó 𝑠𝑖 là màu ban
đầu của đỉnh 𝑖. Dòng tiếp theo chứa số nguyên 𝑄 là số truy vấn. Dòng thứ 𝑖 trong 𝑄 dòng tiếp theo chứa
truy vấn thứ 𝑖 theo định dạng như mô tả ở trên.
Kết quả: Ghi ra tệp văn bản color.out. Đối với mỗi truy vấn loại 3, hãy in một số nguyên trên một
dòng là câu trả lời cho truy vấn này.
Ví dụ:
color.inp color.out
6 2
1 2 1
2 6 0
2 3
3 4
3 5
1 1 3 1 2 1
5
3 6 4
1 6 4 2
3 1 5
2 2 4
3 3 5
Subtasks:
• Subtask 1 (20%): 2 ≤ 𝑁, 𝑄 ≤ 103 ;
• Subtask 2 (23%): Chỉ có truy vấn loại thứ 3;
• Subtask 3 (20%): Chỉ có truy vấn loại 2, 3;
• Subtask 4 (20%): Chỉ có truy vấn loại 1, 3;
• Subtask 5 (17%): Không có thêm ràng buộc nào.
-------------------- Hết --------------------

Trang 3/3

You might also like