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

Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018

KHỐI SIÊU CÚP, 06/10/2018

LƯU Ý

Trong tất cả các bài:

• Dữ liệu vào từ thiết bị vào chuẩn (stdin)

• Kết quả ghi ra thiết bị ra chuẩn (stdout)

Mục lục

Bảo tàng — SC01.MUSEUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


Lâu đài — SC02.CASTLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Dãy số rút gọn — SC03.REDSEQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Tô màu cây — SC04.TREECOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Ngôi sao — SC05.STARS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Trang 1 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Bài A. Bảo tàng — SC01.MUSEUM


File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 0.1 giây
Hạn chế bộ nhớ: 512 MB

Tại thủ đô của đất nước Olympia đã xây dựng viện bảo tàng Vinh quang Olympic, nơi trưng bày giải
thưởng của các học sinh trong nước nhận được từ các kỳ thi Olympic quốc tế. Tòa nhà bảo tàng bao
gồm N phòng triển lãm được đánh số từ 1 đến N . Các phòng được nối với nhau bởi các hành lang. Mỗi
hành lang chỉ nối hai phòng. Biết rằng từ mỗi phòng bảo tàng có thể đến được bất kỳ phòng còn lại bằng
cách di chuyển theo các hành lang. Hơn nữa cũng biết rằng số lượng hành lang là bằng số lượng phòng.
Ban đêm, có đội lính canh bảo vệ bảo tàng. Số lượng lính canh là bằng số lượng phòng và tại mỗi thời
điểm mỗi người lính canh cần canh gác một phòng giao cho anh ta. Sau mỗi giờ, theo kế hoạch canh gác,
một số lính canh được điều động đến phòng khác, trong khi những người còn lại giữ nguyên vị trí của
mình. Kế hoạch canh gác phải đáp ứng các yêu cầu sau đây:

• Đối với mỗi phòng, kế hoạch đòi hỏi người lính canh của nó hoặc là ở nguyên chỗ cũ, hoặc là di
chuyển đến một phòng nào đó có hành lang kết nối với phòng này.

• Sau khi điều động, mỗi phòng có đúng một lính canh bảo vệ.

• Mỗi giờ trong đêm sử dụng cùng một kế hoạch canh gác.

Hình 1: Một trong các kế hoạch canh gác có thể cho dữ liệu đầu vào trong ví dụ phía dưới

Theo kế hoạch canh gác được trình bày trong Hình 1, sau mỗi giờ:

• Lính canh ở phòng 1 đi đến phòng 2;

• Lính canh ở phòng 2 đi đến phòng 3;

• Lính canh ở phòng 3 đi đến phòng 1;

• Các lính canh ở hai phòng 4 và 5 đổi chỗ cho nhau;

• và lính canh ở phòng 6 suốt đêm ở tại phòng này

Yêu cầu: Giả sử P là số nguyên dương, hãy số lượng các kế hoạch khác nhau canh gác bảo tàng trong
modun P , tức là tính phần dư trong phép chia số lượng này cho P .

Dữ liệu vào
Dữ liệu đầu vào bao gồm các dòng sau đây:

• Dòng đầu tiên chứa hai số nguyên N (3 ≤ N ≤ 50000) - số lượng phòng trong viện bảo tàng, và P
(2 ≤ P ≤ 10000);

• Mỗi dòng trong số N dòng tiếp theo chứa hai số nguyên trong khoảng từ 1 đến N là các chỉ số của
hai phòng có hành lang kết nối.

Trang 2 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Kết quả
Ghi ra một số nguyên là phần dư trong phép chia số lượng kế hoạch canh gác bảo tàng cho P .

Ví dụ
stdin stdout
6 1000 20
1 2
2 3
3 1
3 4
4 5
4 6

Giải thích
Đối với ví dụ, có 20 kế hoạch tuần tra khác nhau có thể mô tả bởi các phép thế trên tập 6 phần
tử: (123456), (123546), (123654), (124356), (132456), (132546), (132654), ( 213456), (213546), (213654),
(214356), (231456), (231546), (231654), (312456), (312546), (312654), (321456), (321546), (321654). Ở
đây số ở vị trí thứ j trong ngoặc ghi nhận chỉ số phòng mà lính canh thứ j cần di chuyển sang trong kế
hoạch tương ứng. Hình 1 tương ứng với kế hoạch (231546).

Trang 3 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Bài B. Lâu đài — SC02.CASTLE


File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 0.3 giây
Hạn chế bộ nhớ: 512 MB

Lâu đài cổ có dạng một hình chữ nhật. Trong lâu đài có ít nhất là hai phòng. Mặt sàn của lâu đài có
thể chia ra làm M × N ô vuông. Mỗi ô vuông như vậy chứa số 0 hoặc 1 cho biết vị trí tương ứng là rỗng
hay là bức tường của lâu đài. Như vậy, hai ô rỗng bất kỳ là thuộc cùng một phòng trong lâu đài nếu như
chúng có chung cạnh hoặc từ ô này có thể di chuyển đến ô kia qua một dãy các ô rỗng mà hai ô liên tiếp
có chung cạnh.
Yêu cầu: Hãy tính diện tích của phòng lớn nhất có thể tạo được nhờ phá một ô tường bên trong lâu đài,
tức là thay đổi đúng một ô bên trong của lưới đang chứa số 1 thành chứa số 0. Không được phép phá bỏ
ô thuộc bức tường bao quanh lâu đài.

Dữ liệu vào
Dữ liệu đầu vào bao gồm các dòng sau đây:

• Dòng đầu tiên chứa số nguyên M (3 ≤ M ≤ 1000);

• Dòng thứ hai chứa số nguyên N (3 ≤ N ≤ 1000);

• M dòng tiếp theo mô tả sàn của lâu đài, mỗi dòng chứa N số 0 hay 1 được ghi liên tiếp nhau. Chữ
số đầu tiên và cuối cùng của mỗi dòng đều là 1 và dòng đầu tiên cũng như dòng cuối cùng là các
dòng toàn số 1.

Kết quả
Ghi ra một số nguyên là diện tích của phòng lớn nhất có thể tạo ra nhờ loại bỏ một ô tường bên trong
lâu đài.

Ví dụ
stdin stdout
6 10
8
11111111
10011001
10011001
11111001
10101001
11111111
9 38
12
111111111111
101001000001
111001011111
100101000001
100011111101
100001000101
111111010101
100000010001
111111111111

Trang 4 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Bài C. Dãy số rút gọn — SC03.REDSEQ


File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 1 giây
Hạn chế bộ nhớ: 512 MB

Một dãy số có thể được biểu diễn bởi một mẫu rút gọn theo nhiều cách. Trong bài toán này ta quan
tâm đến các dãy số với các phần tử được sắp xếp tăng dần và có hiệu bằng nhau của hai phần tử liên
tiếp bất kỳ trong dãy. Khi đó mẫu rút gọn bao gồm ba thành phần: phần tử nhỏ nhất, phần tử lớn nhất
và hiệu của hai phần tử liên tiếp. Ví dụ dãy số L = {10, 13, 16, 19, 22} được biểu diễn bởi mẫu rút gọn
L = 10 − 22/3.
Cho N dãy, mỗi dãy có tên gọi được ký hiệu bởi một chữ cái viết hoa trong bảng chữ cái tiếng Anh, các
dãy số có thể được tính toán trong một biểu thức bởi các toán tử và ký hiệu sau:

• các ký tự tương ứng với các dãy số đã cho;

• các dấu ngoặc;

• toán tử hợp hai dãy số, ký hiệu bởi ‘+’. Ta gọi hợp của 2 dãy A và B là tập tất cả các số có trong
A và B. Ví dụ: A = {4, 8, 12, 16}, B = {11, 14, 17, 20, 23}, A + B = {4, 8, 11, 12, 14, 16, 17, 20, 23};

• toán tử giao giữa hai dãy số, ký hiệu bởi dấu ‘*’. Ta gọi hợp của 2 dãy A và B là tập tất cả các số
xuất hiện trong cả A và B. Ví dụ: A = {2, 3, 4, 5, 6, 7}, B = {1, 2, 3, 4, 5}, A ∗ B = {2, 3, 4, 5}.

Biết rằng thứ tự ưu tiên tính toán trong biểu thức là: dấu ngoặc rồi đến toán tử giao ‘*’ rồi đến toán tử
hợp ‘+’.
Yêu cầu: Cho biết mẫu rút gọn của mỗi dãy số và một biểu thức, hãy cho biết dãy số là kết quả tính
toán biểu thức đó.

Dữ liệu vào
Dữ liệu vào có dạng như sau:

• Dòng đầu tiên chứa một số nguyên N là số lượng dãy số;

• Mỗi dòng trong số N dòng tiếp theo là mô tả mẫu rút gọn của một dãy số;

• Dòng thứ N + 2 mô tả biểu thức cần tính.

Kết quả
Kết ghi ra với định dạng sau:

• Dòng đầu tiên chứa một số nguyên là số lượng phần tử của dãy số kết quả tìm được;

• Dòng thứ hai ghi ra các phần tử được sắp xếp tăng dần của dãy số đó, cách nhau bởi dấu cách.

Trang 5 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018
Ví dụ
stdin stdout
3 2
A=2-8/2 4 8
C=11-23/3
B=4-16/4
A*(B+C)
3 5
A=2-7/1 2 3 4 5 6
B=1-5/1
C=3-9/3
B*A+A*C

Giải thích

• Trong ví dụ thứ nhất, các dãy số là:


A = {2, 4, 6, 8}
B = {4, 8, 12, 16}
C = {11, 14, 17, 20, 23}
Biểu thức được tính toán như sau:
B + C = {4, 8, 11, 12, 14, 16, 17, 20, 23} và
A ∗ (B + C) = 4, 8

• Trong ví dụ thứ hai, các dãy số là:


A = {2, 3, 4, 5, 6, 7}
B = {1, 2, 3, 4, 5}
C = {3, 6, 9}
Biểu thức được tính toán như sau:
B ∗ A = {2, 3, 4, 5},
A ∗ C = {3, 6}, và
B ∗ A + A ∗ C = {2, 3, 4, 5, 6}

Hạn chế

• 1 < N ≤ 16;

• Các phần tử trong dãy là các số nguyên trong khoảng từ 0 đến 109 ;

• Số lượng phần tử trong một dãy không quá 10000;

• Số lượng các ký tự trong một biểu thức trong khoảng từ 3 đến 1000;

• Các mẫu rút gọn trong dữ liệu vào không có dấu cách giữa các ký tự;

• Dữ liệu đảm bảo dãy số kết quả không phải là dãy rỗng.

Trang 6 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Bài D. Tô màu cây — SC04.TREECOL


File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 0.5 giây
Hạn chế bộ nhớ: 512 MB

Thành vẽ một cây (đồ thị vô hướng liên thông không có chu trình) với N nút được đánh số từ 1 đến N
và muốn tô màu các nút của cây bằng màu đen hoặc trắng. Trên cây, hai nút có thể ghép đôi với nhau
khi và chỉ khi chúng thỏa mãn các điều kiện sau:

• cả hai cùng được tô bởi màu trắng, và

• hoặc là có cạnh nối trực tiếp giữa chúng hoặc là có thể nối chúng bởi một đường đi đơn chỉ gồm
toàn nút màu đen ngoại trừ hai nút đầu mút là màu trắng.

Yêu cầu: hãy giúp Thành tô màu các nút của cây bằng màu đen hoặc trắng sao cho số lượng cặp nút
có thể ghép đôi với nhau là lớn nhất.

Dữ liệu vào
Dòng đầu tiên chứa một số nguyên dương T (T ≤ 10) là số lượng bộ test, mỗi bộ test chứa thông tin về
một cây cần tô màu có cấu trúc như sau:

• Dòng thứ nhất chứa một số nguyên dương N (N ≤ 5000) là số lượng nút của cây;

• Mỗi dòng trong số N − 1 dòng tiếp theo chứa hai số nguyên x y cách nhau bởi dấu cách cho biết
có cạnh nối trực tiếp giữa hai nút x và y.

Kết quả
Ghi ra T dòng, mỗi dòng một số nguyên là kết quả tìm được tương ứng với các bộ test trong dữ liệu vào.

Ví dụ
stdin stdout
2 7
8 1
1 2
2 3
2 4
4 5
5 6
6 7
6 8
2
1 2

Giải thích
Có 3 bộ test trong dữ liệu vào (T = 2).
Đối với bộ test thứ nhất, cây có 8 nút và 7 cạnh, trong hình vẽ là cách tô màu cho số lượng cặp nút có
thể ghép đôi là lớn nhất (7 cặp). Các cặp đó là: (1, 3), (1, 4), (3, 4), (4, 5), (5, 7) (5, 8), (7, 8).

Trang 7 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Đối với bộ test thứ hai, cây chỉ có 2 nút và được nối với nhau bởi một cạnh duy nhất. Vì vậy cần tô cả
2 nút đó bằng màu trắng và tạo ra duy nhất một cặp nút có thể ghép đôi.

Trang 8 trên 9
Cuộc thi Olympic Tin Học Sinh Viên cấp trường ĐHBKHN 2018
KHỐI SIÊU CÚP, 06/10/2018

Bài E. Ngôi sao — SC05.STARS


File dữ liệu vào: stdin
File kết quả: stdout
Hạn chế thời gian: 1 giây
Hạn chế bộ nhớ: 512 MB

Bờm rất yêu thiên văn học, nó đang tham gia vào một dự án khảo sát không gian lân cận của một hệ
thống các vì sao. Để có được mô tả toán học, các ngôi sao trong hệ thống được hình dung như là các
điểm trong không gian 3 chiều. Bờm muốn nhốt tất cả các ngôi sao vào trong một lon coca cola. Nói
một cách chính xác, Bờm muốn xác định hình trụ tròn xoay với thể tích nhỏ nhất bao bọc được tất cả
các ngôi sao. Hình trụ có thể có trục hướng theo bất kỳ hướng nào và ít nhất một trong hai đáy của nó
phải chứa ít ra là ba ngôi sao.
Yêu cầu: Hãy giúp Bờm giải quyết bài toán đặt ra.

Dữ liệu vào
Dữ liệu đầu vào bao gồm các dòng sau đây:

• Dòng đầu tiên chứa số nguyên n (4 ≤ n ≤ 1000) là số lượng ngôi sao.

• Mỗi dòng trong số n dòng tiếp theo chứa ba số nguyên x, y và z (1000 ≤ x, y, z ≤ 1000) là tọa độ
của một ngôi sao. Dữ liệu đảm bảo: Không có hai ngôi sao nào có cùng tọa độ và không có bốn
ngôi sao nào nằm trên cùng một mặt phẳng.

Kết quả
Ghi ra một số thực với tám chữ số sau dấu chấm là thể tích của hình trụ tìm được.

Ví dụ
stdin stdout
4 1.57079633
1 0 0
1 1 0
0 0 0
0 0 1
4 41938.65135885
-100 0 0
10 0 10
-10 -10 -10
0 0 0
7 298192571.11934924
10 20 30
0 0 0
-100 1000 -20
100 -20 33
8 -7 900
-100 -223 -23
3 0 3

Trang 9 trên 9

You might also like